NumPy

shape:返回 w h

data = np.array([[1, 2],
                 [3, 4]])

shape = data.shape
print(shape)        # (2, 2)

size:返回 w x h

print(np.ones((3, 4)).size)    # 12

flatten and ravel 

二者都是把数据 展开,拉成一维,区别在于 flatten 类似于 深拷贝,ravel 类似于 浅拷贝

data = np.array([[1, 2],
                 [3, 4]])

################# 展开 #################
######### flatten #########
### flatten 类似于深拷贝,改变 展开后的 值 不会影响 原值
data1 = data.flatten()
print(data1)        # [1 2 3 4]

data2 = data.flatten('F')
print(data2)        # [1 3 2 4]

data3 = data.flatten('C')   ### 默认为 C
print(data3)        # [1 2 3 4]

data4 = np.reshape(data, (4, ))  ### 等价
print(data4)        # [1 2 3 4]

### vs ravel
data3[1] = 1000
print(data3)        # [   1 1000    3    4]
print(data)         # [[1 2]        ### 原值没变
                    # [3 4]]

######### ravel #########
### reval 类似于浅拷贝,改变 展开后 的值 会影响 原值
### reval 也有 F C 参数
data_new = data.ravel()
print('data_new is', data_new)      # data_new is [1 2 3 4]

### vs flatten
data_new[1] = 963
print(data_new)     # [  1 963   3   4]
print(data)         # [[  1 963]        ### 原值变了
                    # [  3   4]]

reshape:形变

可以实现 flatten 效果

data = np.array([[1, 2],
                 [3, 4]])
data4 = np.reshape(data, (4, )) ### 等价 print(data4) # [1 2 3 4]

参考资料:

https://blog.csdn.net/liuweiyuxiang/article/details/78220080   numpy的ravel() 和 flatten()函数

原文地址:https://www.cnblogs.com/yanshw/p/12394600.html