使用numpy堆叠仅单维度不同的多维数组的实现方案咨询
你需要的输出是object类型的NumPy数组,无法通过常规的np.hstack/np.concatenate实现,因为这两个函数是用于同类型数组的维度拼接,而你的需求是将子数组、字符串作为独立对象存储,不需要手动写循环,有更简洁高效的实现方式。
最优实现方案(无循环,性能最优)
import numpy as np # 原始数组 a = np.array([[[1],[1]],[[2],[2]],[[3],[3]],[[4],[4]]]) b = np.array(["a", "b", "c", "d"]).reshape(4,1,1) # 创建形状匹配的空object类型数组 c = np.empty((4, 2), dtype=object) # 批量赋值两列内容 c[:, 0] = a.tolist() c[:, 1] = b.ravel()
该实现为向量化操作,性能远高于手动遍历拼接,输出结果和你要求的结构完全一致。
失败原因说明
np.concatenate类的拼接函数会尝试将两个数组的元素内容合并到同一维度下,会自动做类型对齐(比如把数值转成字符串),无法保留子数组作为独立元素的结构,因此不符合你的需求。
可选循环实现(仅适合小数据量场景)
c = [] for ai, bi in zip(a, b): c.append([ai, bi.item()]) c = np.array(c, dtype=object)
内容的提问来源于stack exchange,提问作者user430953
相关产品推荐
相关产品推荐

