小编典典

numpy数组串联:“ ValueError:所有输入数组的维数必须相同”

python

如何串联这些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: all the input arrays must have same number of dimensions

我究竟做错了什么?


阅读 305

收藏
2020-12-20

共1个答案

小编典典

要使用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是这样,它的一个1D阵列dtype=object具有的形状(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]])
2020-12-20