数组对象的shape属性可用于查看或改变数组的形状,示例代码如下。
a=np.arange(12) #创建一维数组,其中共有12个元素
a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
a.shape #查看数组形状
(12,)
a.shape=(2,-1) #更改数组形状为2行,-1表示每行中的元素个数自动计算
a
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
reshape()方法可更改数组形状,并返回更改后的新数组,示例代码如下。a.reshape((3,-1)) #更改数组形状,返回新数组
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
a.reshape((2,3)) #reshape()方法不能减少或增加数组元素个数
Traceback (most recent call last):
File "", line 1, in
ValueError: cannot reshape array of size 12 into shape (2,3)
resize()方法的refcheck参数为False时,可在改变形状的同时更改元素个数,示例代码如下。
a.resize((3,4)) #更改形状
a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
a.resize((2,3),refcheck=False) #更改形状并减少元素个数
a
array([[0, 1, 2],
[3, 4, 5]])
a.resize((2,5),refcheck=False) #增加元素个数
a
array([[0, 1, 2, 3, 4],
[5, 0, 0, 0, 0]])
np.ravel()函数可将数组转换为一维数组,示例代码如下。
a=np.arange(12)
a.resize((3,4))
a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
np.ravel(a) #返回一维数组,默认行优先
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
np.ravel(a,order='F') #返回一维数组,列优先
array([ 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11])