Numpy: 连接多维数组和一维数组
我有一个2x2的numpy数组:
x = array(([[1,2],[4,5]]))
我需要把它和一个一维数组合并(或者说堆叠),
y = array(([3,6]))
方法是把一维数组加到每一行的末尾,这样就能得到一个2x3的numpy数组,结果看起来是这样的:
array([[1, 2, 3],
[4, 5, 6]])
在numpy的指南中,推荐的方法是:
hstack((x,y))
但是这个方法不管用,会出现以下错误:
ValueError: 数组必须有相同的维度
目前唯一的解决办法似乎是这样做:
hstack((x, array(([y])).T ))
这个方法可以用,但看起来有点像是临时解决方案。我发现没有其他方法可以转置给定的数组,以便hstack能够处理它。我在想,是否有更简单的方法来做到这一点?难道numpy就不能猜出我想做什么吗?
2 个回答
2
也可以这样做:
In [22]: np.append(x, y[:, np.newaxis], axis=1)
Out[22]:
array([[1, 2, 3],
[4, 5, 6]])
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]])