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()函数