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

如何堆叠不同形状的numpy数组 解决np.stack报错问题

numpy异构形状数组堆叠解决方案

你调用np.stack报错的核心原因是该函数要求所有输入数组的形状完全一致,你使用的a形状为(2, 3),b形状为(2,),形状不匹配,因此无法直接堆叠。

你期望的输出中,每行包含两个形状不一致的元素(长度为3的数组 + 标量),numpy原生的同类型多维数组不支持这种结构,需要使用dtype=object的对象数组实现,以下是两种可行方案:

方案1:直接预分配对象数组赋值

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([7, 8])

# 预分配形状为(2, 2)的对象数组
result = np.empty((2, 2), dtype=object)
# 第一列填充a的行数组
result[:, 0] = list(a)
# 第二列填充b的标量
result[:, 1] = b

输出结果和你预期完全一致:

array([[array([1, 2, 3]), 7],
       [array([4, 5, 6]), 8]], dtype=object)

方案2:列表推导后转对象数组

如果逻辑更简单,也可以先通过列表推导构造嵌套列表,再转numpy数组:

result = np.array([[row_a, row_b] for row_a, row_b in zip(a, b)], dtype=object)

内容的提问来源于stack exchange,提问作者user10397650

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:57:03