如何将向量拼接为矩阵?调整NumPy代码实现目标矩阵格式
解决NumPy向量拼接为指定矩阵的问题
嘿,我来帮你搞定这个需求!你当前用np.concatenate得到一维数组,是因为默认情况下这个函数会沿着轴0(也就是行方向)拼接,而你的三个向量都是一维的,所以直接被连成了一串。要得到你想要的两行三列矩阵,有几种简单的方法:
方法1:转置向量为列后拼接
你可以先把每个一维向量转换成列向量(形状从(2,)变成(2,1)),然后指定沿着轴1(列方向)拼接:
import numpy as np v1 = np.array([10, 0]) v2 = np.array([120, 9]) v3 = np.array([100, 7]) # 用[:, np.newaxis]把一维向量转为列向量,再沿列拼接 M = np.concatenate((v1[:, np.newaxis], v2[:, np.newaxis], v3[:, np.newaxis]), axis=1) print(M)
运行结果:
[[ 10 120 100] [ 0 9 7]]
方法2:用np.column_stack简化操作
NumPy提供了专门的column_stack函数,它会自动把一维数组当作列来堆叠,代码更简洁:
M = np.column_stack((v1, v2, v3))
这个方法和方法1的效果完全一致,不需要手动转换向量形状,适合快速实现。
方法3:先按行堆叠再转置
你也可以先把三个向量按行组合成一个3行2列的矩阵,然后通过转置(.T)得到2行3列的目标矩阵:
M = np.array([v1, v2, v3]).T
np.array([v1, v2, v3])会生成一个形状为(3,2)的矩阵,转置后就变成了你需要的(2,3)格式。
这几种方法都能完美得到你期望的矩阵格式,你可以根据自己的习惯选择~
内容的提问来源于stack exchange,提问作者user3668129
相关产品推荐
相关产品推荐

