Python函数Numpy中的reshape()函数详解
在Python的Numpy库中,reshape()是一种重塑数组形状的函数。该函数可以将一个n维数组重塑为m维数组,并返回一个新的数组对象。
reshape()函数的语法如下:
numpy.reshape(array, newshape, order='C')
其中, 个参数array是原始的数组,第二个参数newshape是一个整数元组tuple,用于指定新数组的形状。第三个参数order是可选的,用于指定重排列元素的顺序,有C、F和A三种选项。
C(按行):是默认的重排元素顺序,按照原始数组的行顺序重排元素。
F(按列):按照原始数组的列顺序重排元素。
A(按原始顺序):保持原始数组元素的顺序。
那么下面让我们通过一些示例来更详细地了解reshape()函数的用法:
(1) 创建一个一维数组,并使用reshape()函数将其转换为二维数组:
import numpy as np
a = np.arange(10)
print('原始数组:', a)
print('数组a的形状:', a.shape)
b = np.reshape(a, (2,5))
print('重塑后的数组b:
', b)
print('数组b的形状:', b.shape)
输出结果如下:
原始数组: [0 1 2 3 4 5 6 7 8 9] 数组a的形状: (10,) 重塑后的数组b: [[0 1 2 3 4] [5 6 7 8 9]] 数组b的形状: (2, 5)
在例子中,我们首先使用arange()函数创建一个长度为10的一维数组,然后使用reshape()函数将其重塑为2行5列的二维数组。在重塑后的数组b中,元素的排列顺序是按行的。
(2) 创建一个三维数组,并使用reshape()函数将其转换为二维数组:
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print('原始数组:
', c)
print('数组c的形状:', c.shape)
d = np.reshape(c, (2,6))
print('重塑后的数组d:
', d)
print('数组d的形状:', d.shape)
输出结果如下:
原始数组: [[[ 1 2 3] [ 4 5 6]] [[ 7 8 9] [10 11 12]]] 数组c的形状: (2, 2, 3) 重塑后的数组d: [[ 1 2 3 4 5 6] [ 7 8 9 10 11 12]] 数组d的形状: (2, 6)
在这个示例中,我们先创建了一个三维数组(2x2x3),并使用reshape()函数将其重塑为2行6列的二维数组。需要注意的是,数组b中的元素排列顺序是按照原数组中的元素顺序来的。
(3) 创建一个四维数组,并使用reshape()函数将其转换为三维数组:
e = np.array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]]])
print('原始数组:
', e)
print('数组e的形状:', e.shape)
f = np.reshape(e, (2, 2, 4))
print('重塑后的数组f:
', f)
print('数组f的形状:', f.shape)
输出结果如下:
原始数组: [[[[ 0 1] [ 2 3]] [[ 4 5] [ 6 7]]] [[[ 8 9] [10 11]] [[12 13] [14 15]]]] 数组e的形状: (1, 2, 2, 2) 重塑后的数组f: [[[ 0 1 2 3] [ 4 5 6 7]] [[ 8 9 10 11] [12 13 14 15]]] 数组f的形状: (2, 2, 4)
在这个示例中,我们先创建了一个四维数组(1x2x2x2),并使用reshape()函数将其重塑为3维数组(2x2x4)。在重塑后的数组f中,元素排列顺序按照原数组中的元素顺序来的。
总结
在numpy库中,reshape()函数是一种非常强大、常用的数组形状转换方法。它通过重新排列原始数组中的元素以制定的方式,来创建新的n维数组,并为您提供了非常灵活和方便的数组操作方式。您可以根据自己的需要随时重塑数组,并利用其直观性和易用性来简化复杂的数据处理任务。更多不同情境下的使用细节与示例可以在numpy官方文档中查找。
