如何串联这些numpy数组?
numpy
首先np.array具有形状(5,4)
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,)
(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]) 但是我得到这个错误
np.concatenate([array1, array2])
ValueError: all the input arrays must have same number of dimensions
我究竟做错了什么?
要使用np.concatenate,我们需要将第二个数组扩展到2D,然后沿着axis=1-
np.concatenate
2D
axis=1
np.concatenate((a,b[:,None]),axis=1)
或者,我们可以使用np.column_stack它来照顾它-
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它。这里是一个示例,目的是为了清楚地说明这一点-
b
1D
dtype=object
(1,)
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]])