如何用Numpy实现矩阵横向拼接(非展平式合并)
实现矩阵按列横向拼接的方法
要实现将两个同行数的矩阵按每行对应拼接成宽矩阵的需求,直接使用np.hstack()或np.concatenate()指定轴参数即可,无需展平数组。
示例代码
import numpy as np # 定义原始矩阵 A = np.array([[1,2,3], [4,5,6], [7,8,9]]) B = np.array([[10,11,12], [13,14,15], [16,17,18]]) # 方法1:使用hstack横向拼接 Z = np.hstack((A, B)) # 方法2:使用concatenate指定axis=1(列维度) Z = np.concatenate((A, B), axis=1)
输出结果
print(Z) # 输出: # [[ 1 2 3 10 11 12] # [ 4 5 6 13 14 15] # [ 7 8 9 16 17 18]]
原理说明
np.ravel()和np.reshape()会先将数组完全展平为一维,再重新排列,这会破坏原矩阵的行结构,导致错误的拼接结果。np.hstack()本质是对np.concatenate()的封装,专门用于横向(列方向)拼接数组;np.concatenate()通过指定axis参数,可以灵活控制拼接的维度:axis=1表示在列维度拼接(适用于二维矩阵)- 对于更高维度的数组,只需将
axis设置为需要拼接的维度序号即可,前提是除拼接轴外,其他维度的形状完全一致。
内容的提问来源于stack exchange,提问作者Manu Dwivedi
相关产品推荐
相关产品推荐

