如何用NumPy将(x,y)矩阵展平为(xy,)形式的一维向量?
解决矩阵展平为(xy,)一维向量的问题
你的代码存在两个关键错误:
- 调用
np.reshape时参数顺序颠倒,第一个参数应该是要变形的数组,而非目标形状的数值 - 目标形状写
1会得到(1,)的数组,你需要的是(xy,),应该用(rows2*cols2,)或更简洁的-1
正确实现方式
以下几种方法都能将矩阵展平为(xy,)形状的一维向量,且保留原有数值:
方法1:使用reshape指定目标形状
import numpy as np # 假设Matrix2是你的原始矩阵 Matrix2 = np.array(Matrix2) rows2, cols2 = Matrix2.shape # 展平为(xy,)的向量 Matrix2 = Matrix2.reshape(rows2 * cols2,)
或者用-1让numpy自动计算一维长度,写法更简洁:
Matrix2 = Matrix2.reshape(-1,)
方法2:使用flatten()方法
返回原矩阵的一维拷贝,适合需要修改展平后数组且不影响原矩阵的场景:
Matrix2 = Matrix2.flatten()
方法3:使用ravel()方法
返回原矩阵的一维视图(如果内存布局允许),内存占用更低,修改视图会影响原矩阵:
Matrix2 = Matrix2.ravel()
原代码无效的原因
你写的np.reshape(rows2*cols2,1)是把标量rows2*cols2转换成了形状为(1,)的数组,完全没有处理原始的Matrix2,所以既没保留原数值,也没得到正确的形状。
内容的提问来源于stack exchange,提问作者Sruthi R
相关产品推荐
相关产品推荐

