Numpy:连接多维和一维数组

时间:2010-11-11 19:21:16

标签: python arrays numpy concatenation

我有一个2x2 numpy数组:

x = array(([[1,2],[4,5]]))

我必须与一维数组合并(或堆叠,如果你愿意):

y = array(([3,6]))

将它添加到行的末尾,从而形成一个2x3 numpy数组,输出如下:

数组([[1,2,3],        [4,5,6]])

现在,在numpy指南中提出的方法是:

hstack((x,y))

但是这不起作用,返回以下错误:

  

ValueError:数组必须具有相同的维数

唯一可能的解决办法似乎是这样做:

hstack((x, array(([y])).T ))

有效,但看起来和听起来相当hackish。似乎没有其他方法来转置给定的数组,因此hstack能够消化它。我想知道,有更清洁的方法吗?难道没有办法让numpy猜出我想做什么吗?

2 个答案:

答案 0 :(得分:28)

unutbu的答案一般都有效,但在这种情况下还有np.column_stack

>>> x
array([[1, 2],
       [4, 5]])
>>> y
array([3, 6])

>>> np.column_stack((x,y))
array([[1, 2, 3],
       [4, 5, 6]])

答案 1 :(得分:2)

也有效:

In [22]: np.append(x, y[:, np.newaxis], axis=1)
Out[22]: 
array([[1, 2, 3],
       [4, 5, 6]])