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

如何vstack或拼接不同形状的NumPy矩阵并实现遍历操作?

问题原因

np.vstack要求所有输入数组除了拼接轴外的其余维度完全一致,你当前使用的a形状为(3,3)、b形状为(3,2),二者轴1(列维度)长度不同,无法直接堆叠为统一结构的二维数值数组,因此触发报错。

你期望的输出并不是常规的高维数值数组(numpy的常规数值数组要求所有子元素的维度统一),而是将不同形状的矩阵作为独立元素存储的容器,两种实现方案如下:

方案1:使用Python列表存储(推荐)

如果你的需求仅为遍历每个子矩阵处理,直接使用Python列表即可,实现最简单,也没有额外开销:

import numpy as np 

a = np.array([[3,3,3],[3,3,3],[3,3,3]])
b = np.array([[2,2],[2,2],[2,2]])

# 直接将矩阵存入列表
matrix_container = [a, b]

# 遍历逻辑和你预期完全一致
for matrix in matrix_container:
    row = matrix[1]
    print(row)

输出结果:

[3 3 3]
[2 2]

方案2:创建object类型的numpy数组

如果你确实需要使用numpy数组格式存储,可以指定dtype=object生成元素为任意对象的numpy数组,和你期望的输出格式完全匹配:

import numpy as np 

a = np.array([[3,3,3],[3,3,3],[3,3,3]])
b = np.array([[2,2],[2,2],[2,2]])

# 生成object类型的numpy数组
matrix_container = np.array([a, b], dtype=object)

# 遍历逻辑不变
for matrix in matrix_container:
    row = matrix[1]
    print(row)

打印matrix_container的结果和你期望的输出一致:

array([array([[3, 3, 3],
       [3, 3, 3],
       [3, 3, 3]]),
       array([[2, 2],
       [2, 2],
       [2, 2]])], dtype=object)

注意:object类型的numpy数组无法使用numpy的向量化运算特性,如果没有特殊需求,优先使用普通Python列表即可。

内容的提问来源于stack exchange,提问作者C.L.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:06:02