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不存在这种问题
以上
希望对大家有所帮助
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步