如何连接这些 numpy
数组?
第一个 np.array
形状为 (5,4)
[[ 6487 400 489580 0]
[ 6488 401 492994 0]
[ 6491 408 489247 0]
[ 6491 408 489247 0]
[ 6492 402 499013 0]]
第二个 np.array
形状为 (5,)
[ 16. 15. 12. 12. 17. ]
最终结果应该是
[[ 6487 400 489580 0 16]
[ 6488 401 492994 0 15]
[ 6491 408 489247 0 12]
[ 6491 408 489247 0 12]
[ 6492 402 499013 0 17]]
我试过 np.concatenate([array1, array2])
但我得到这个错误
ValueError: 所有输入数组的维数必须相同
我做错了什么?
最佳答案
要使用np.concatenate
,我们需要将第二个数组扩展为2D
,然后沿axis=1
连接-
np.concatenate((a,b[:,None]),axis=1)
或者,我们可以使用 np.column_stack
来处理它 -
np.column_stack((a,b))
示例运行 -
In [84]: a
Out[84]:
array([[54, 30, 55, 12],
[64, 94, 50, 72],
[67, 31, 56, 43],
[26, 58, 35, 14],
[97, 76, 84, 52]])
In [85]: b
Out[85]: array([56, 70, 43, 19, 16])
In [86]: np.concatenate((a,b[:,None]),axis=1)
Out[86]:
array([[54, 30, 55, 12, 56],
[64, 94, 50, 72, 70],
[67, 31, 56, 43, 43],
[26, 58, 35, 14, 19],
[97, 76, 84, 52, 16]])
如果 b
是这样的,它是 dtype=object
的 1D
数组,形状为 (1,)
,很可能所有数据都包含在其中的唯一元素中,我们需要在连接之前将其展平。为此,我们也可以在其上使用 np.concatenate
。这是一个示例运行以说明这一点 -
In [118]: a
Out[118]:
array([[54, 30, 55, 12],
[64, 94, 50, 72],
[67, 31, 56, 43],
[26, 58, 35, 14],
[97, 76, 84, 52]])
In [119]: b
Out[119]: array([array([30, 41, 76, 13, 69])], dtype=object)
In [120]: b.shape
Out[120]: (1,)
In [121]: np.concatenate((a,np.concatenate(b)[:,None]),axis=1)
Out[121]:
array([[54, 30, 55, 12, 30],
[64, 94, 50, 72, 41],
[67, 31, 56, 43, 76],
[26, 58, 35, 14, 13],
[97, 76, 84, 52, 69]])
关于python - numpy 数组连接 : "ValueError: all the input arrays must have same number of dimensions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41989950/