如何将多个列向量NumPy数组按指定方式拼接至原数组
解决方案:拼接NumPy数组得到目标结构
嘿,这个拼接需求其实很清晰,咱们分两步就能轻松实现,我给你拆解一下具体操作:
第一步:准备原始数据
首先先把题目里的数组都定义好:
import numpy as np # 原数组a a = np.array([ [1, 2, 3], [2, 3, 4] ]) # 三个列向量 b = np.array([[1], [2], [3]]) c = np.array([[5], [6], [7]]) d = np.array([[9], [10], [11]])
第二步:拼接列向量成3×3数组
我们需要把b、c、d这三个列向量横向拼接,变成一个3行3列的数组,这里用np.hstack()(horizontal stack,横向堆叠)最方便:
# 横向拼接三个列向量,得到底部的3×3数组 bottom_section = np.hstack([b, c, d])
如果你习惯用更通用的np.concatenate(),也可以这样写,效果完全一样:
bottom_section = np.concatenate([b, c, d], axis=1) # axis=1代表横向拼接
第三步:纵向拼接得到最终数组
接下来把原数组a和刚生成的bottom_section纵向拼接,用np.vstack()(vertical stack,纵向堆叠)即可:
# 纵向拼接原数组和底部数组,得到目标结果 final_a = np.vstack([a, bottom_section])
同样,用np.concatenate()的写法是:
final_a = np.concatenate([a, bottom_section], axis=0) # axis=0代表纵向拼接
验证结果
运行代码后打印final_a,就能得到你想要的目标数组:
print(final_a) # 输出结果: # [[ 1 2 3] # [ 2 3 4] # [ 1 5 9] # [ 2 6 10] # [ 3 7 11]]
简单解释一下关键函数的要求:
np.hstack()要求所有输入数组的行数必须相同,这里三个列向量都是3行,刚好符合条件;np.vstack()要求所有输入数组的列数必须相同,原数组a是3列,bottom_section也是3列,所以可以顺利拼接。
内容的提问来源于stack exchange,提问作者Neel Shukla
相关产品推荐
相关产品推荐

