Python --函数 shape()和reshape()

shape()和reshape()都是数组array中的方法

1. shape()

import numpy as np
a = np.array([1,2,3,4,5,6,7,8])  #一维数组
print(a.shape[0])  #值为8,因为有8个数据
print(a.shape[1])  #IndexError: tuple index out of range

a = np.array([[1,2,3,4],[5,6,7,8]])  #二维数组
print(a.shape[0])  #值为2,最外层矩阵有2个元素,2个元素还是矩阵。
print(a.shape[1])  #值为4,内层矩阵有4个元素。
print(a.shape[2])  #IndexError: tuple index out of range

 

2. reshape()

                     

 

形状变化是基于数组元素不能改变的,变成的新形状中所包含的元素个数必须符合原来元素个数。如果数组元素发生变化的时候,就会报错:

                            

 

reshape函数生成的新数组和原始数组公用一个内存,也就是说,不管是改变新数组还是原始数组的元素,另一个数组也会随之改变:

                        

 

方法numpy.reshape()是怎么进行数据重新定义shape?

先生成一个随机数组

 

reshape成5行3列,可以看到是把(5,3)中第一行的剩余两列数据作为第二行的前两列,以此类推

 

 

reshape成一列,其中(-1,1)也可以是任意列,当然这里只能是1、3、5列。看到实现方式是按行来循环,从第一列到最后一列。

 

最后,再reshape(-1,3),可以看到实现方式是按顺序取,每次取多少列的数据,再顺序排放。

 

对于多维数组,同样的

b=np.random.random((2,3,4,5))

c=b[:,:,:,0].reshape(-1,1)

得到,

 

参考:https://blog.csdn.net/qq_28618765/article/details/78083895

https://blog.csdn.net/qq_37707365/article/details/79056205

 

 

你可能感兴趣的:(Python)