python中的数组堆叠/连接错误

时间:2015-06-17 10:35:36

标签: python arrays numpy concatenation

我正在尝试连接两个数组:a和b,其中

a.shape
(1460,10)
b.shape
(1460,)

我尝试使用hstack并连接为:

np.hstack((a,b)) 
c=np.concatenate(a,b,0) 

我遇到了错误

 ValueError: all the input arrays must have same number of dimensions

请指导我连接并生成尺寸为1460 x 11的数组c。

3 个答案:

答案 0 :(得分:1)

np.c_[a, b]沿最后一个轴连接。 每the docs

  

...数组将沿其最后一个轴堆叠   被升级为至少2-D,后置为1的形状

由于b的形状为(1460,),因此在沿最后一个轴连接之前,其形状会升级为(1460, 1)

In [26]: c = np.c_[a,b]

In [27]: c.shape
Out[27]: (1460, 11)

答案 1 :(得分:1)

尝试

b = np.expand_dims( b,axis=1 ) 

然后

np.hstack((a,b))

np.concatenate( (a,b) , axis=1)

将正常运作。

答案 2 :(得分:1)

最基本的操作是:

np.concatenate((a,b[:,None]),axis=1)

[:,None]位将b变为(1060,1)数组。现在两个数组的第一个维度匹配,你可以在第二个上轻松连接。

有很多方法可以将第二维添加到b,例如reshapeexpanddimshstack使用的atleast_1d在这种情况下无效。 atleast_2dNone添加到了错误的一边。我强烈主张学习[:,None]语法。

一旦数组都是2d并且匹配正确的维度,连接就很容易。