numpy中的ravel(),faltten(),squeeze()的区别与使用

首先,这三个方法都可以将多维数组变为一维数组

区别:

 - ravel():如果没有必要,不会产生源数据的副本

 - flatten():返回源数据的副本

 - squeeze():只能对维数为一的维度降维

另外,reshape(-1)也有拉平数组的功效

 

代码演示如下:

import numpy as np

arr = np.arange(12).reshape(3,4)
print('原数组')
print(arr)
print('---')
print('经过ravel变换的数组')
temp = arr.ravel()
print(temp)
temp[3] = 1
print('---')
print('原数组')
print(arr)

print('==============================')
arr = np.arange(12).reshape(3,4)
print('原数组')
print(arr)
print('---')
temp = arr.flatten()
print('经过flatten变换的数组')
print(temp)
print('---')
print('原数组')
temp[3] = 1
print(arr)

print('==============================')
arr = np.arange(12).reshape(3,4)
print('原数组')
print(arr)
print('---')
print('经过squeeze变换的数组')
print(arr.squeeze())
print('---')
print('重新定义维度为一的数组')
arr = np.arange(12).reshape(12,1)
print('---')
print('经过squeeze变换的一维数组')
print(arr.squeeze())

结果如下图:

 

 可以看到,经过ravel变换后,对新对象进行操作会影响到原数组,而flatten不存在这种问题

 

 

 

以上

希望对大家有所帮助

posted @ 2020-09-25 10:42  醉生梦死_0423  阅读(361)  评论(0编辑  收藏  举报