Numpy: 连接多维数组和一维数组

15 投票
2 回答
14682 浏览
提问于 2025-04-16 06:55

我有一个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]])

撰写回答