使用numpy数组连接列向量

27 投票
2 回答
57438 浏览
提问于 2025-04-17 15:02

我想用numpy数组把'column'向量连接起来,但因为numpy默认把所有数组都当作行向量,所以用np.hstacknp.concatenate在任何轴上都没用(np.transpose也没达到预期效果)。

a = np.array((0, 1))
b = np.array((2, 1))
c = np.array((-1, -1))

np.hstack((a, b, c))
# array([ 0,  1,  2,  1, -1, -1])  ## Noooooo
np.reshape(np.hstack((a, b, c)), (2, 3))
# array([[ 0,  1,  2], [ 1, -1, -1]]) ## Reshaping won't help

一种可能的方法(虽然有点麻烦)是

np.hstack((a[:, np.newaxis], b[:, np.newaxis], c[:, np.newaxis]))
# array([[ 0,  2, -1], [ 1,  1, -1]]) ##

有没有更好的方法呢?

2 个回答

3

我试了以下方法。希望这对你正在做的事情足够好?

>>> np.vstack((a,b,c))
array([[ 0,  1],
       [ 2,  1],
       [-1, -1]])
>>> np.vstack((a,b,c)).T
array([[ 0,  2, -1],
       [ 1,  1, -1]])
60

我觉得 numpy.column_stack 应该能满足你的需求。

举个例子:

>>> a = np.array((0, 1))
>>> b = np.array((2, 1))
>>> c = np.array((-1, -1))
>>> numpy.column_stack((a,b,c))
array([[ 0,  2, -1],
       [ 1,  1, -1]])

其实它和下面这个是一样的:

>>> numpy.vstack((a,b,c)).T

不过,文档里是这么说的。

撰写回答