You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个numpy数组高效拼接为指定结构的矩阵列表?

解决Numpy数组对应行堆叠的问题

嘿,这个需求用numpy的工具就能轻松搞定,我给你两种实用的方案,其中第二种是更高效的向量化操作,适合处理大规模数据:

方法1:列表推导式 + 垂直堆叠(直观易懂)

先定义好你的三个数组,然后遍历每一行索引,把对应行的三个子数组垂直堆叠起来:

import numpy as np

# 初始化你的数组
A = np.array([[1,2,3],[2,3,4]])
B = np.array([[4,5,6],[5,6,7]])
C = np.array([[7,8,9],[8,9,0]])

# 生成目标矩阵列表
Mat = [np.vstack([A[i], B[i], C[i]]) for i in range(A.shape[0])]

解释:

  • np.vstack 本质是 np.concatenate(axis=0) 的封装,它会把多个数组沿着**垂直方向(行维度)**拼接起来,和你提到的np.concatenate用法本质一致。
  • 遍历每个行索引i,取A[i]、B[i]、C[i]这三个行数组,堆叠后就得到一个3行3列的子数组,最终组成你需要的列表结构。

方法2:np.stack 向量化操作(高效无循环)

如果你的数组规模较大,推荐用这个纯numpy向量化的方法,避免Python层面的循环,效率更高:

import numpy as np

A = np.array([[1,2,3],[2,3,4]])
B = np.array([[4,5,6],[5,6,7]])
C = np.array([[7,8,9],[8,9,0]])

# 沿着axis=1堆叠三个数组
stacked_array = np.stack([A, B, C], axis=1)
# 转换为列表,得到目标结构
Mat = list(stacked_array)

解释:

  • np.stack([A,B,C], axis=1) 会在**第二个维度(axis=1)**上合并三个数组,得到形状为(2, 3, 3)的numpy数组:
    • 第一个维度:对应原数组的行索引(共2行)
    • 第二个维度:对应三个输入数组的索引(共3个数组)
    • 第三个维度:原数组的列(共3列)
  • 把这个三维数组直接转成列表,每个元素就是一个(3,3)的子数组,完全符合你要的Mat结构。

验证结果

不管用哪种方法,打印Mat都会得到:

[array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]]),
 array([[2, 3, 4],
       [5, 6, 7],
       [8, 9, 0]])]

内容的提问来源于stack exchange,提问作者G.Hanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:07:57