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

如何将二维numpy数组作为单列追加到另一个二维numpy数组中

实现需求的代码方案

你要的效果需要生成dtype=object的numpy数组,普通数值类型数组不支持单个位置存储子数组,具体实现如下:

方法1:先转object类型再拼接

import numpy as np

# 你的原始数组
array2D_1 = np.arange(9).reshape(3,3)
array2D_2 = np.arange(10,19).reshape(3,3)

# 1. 把第一个数组转为object类型,支持存储非标量元素
arr1_obj = array2D_1.astype(object)
# 2. 构造形状为(3,1)的object数组,每个元素对应第二个数组的一行
arr2_col = np.empty((array2D_2.shape[0], 1), dtype=object)
for idx, row in enumerate(array2D_2):
    arr2_col[idx, 0] = row
# 3. 沿列方向拼接
res = np.concatenate([arr1_obj, arr2_col], axis=1)

输出结果符合你的预期:

array([[0, 1, 2, array([10, 11, 12])],
       [3, 4, 5, array([13, 14, 15])],
       [6, 7, 8, array([16, 17, 18])]], dtype=object)

方法2:更简洁的列表推导式写法

如果不需要严格用numpy原生拼接操作,直接从列表构造更简单:

res = np.array([[*row1, row2] for row1, row2 in zip(array2D_1, array2D_2)], dtype=object)

原方法报错/不符合需求的原因

  • 普通numpy数值数组默认所有元素都是同类型标量,concatenate和append沿axis=1操作时,会默认扩展列维度,把第二个数组的每一行拆成独立的三列追加,所以得到3行6列的结果。
  • 你尝试给array2D_2套一层列表后维度变成3维,和第一个数组的2维不匹配,所以触发维度不一致的报错。

内容的提问来源于stack exchange,提问作者Jürgen K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:09:00