连接numpy数组并获得所需的形状

时间:2017-09-03 23:37:59

标签: python arrays numpy concatenation

让我说我有一个numpy数组a = [1,2,3,4,5]和另一个numpy数组b = [6,7,8,9,10]。如何连接数组并创建一个numpy形状数组(5,2)。我尝试了np.row_stack和np.vstack(它做同样的事情),但这只会产生一个形状为np的数组(2,5)。我如何避免这种情况并获得所需的连接?

比你!

2 个答案:

答案 0 :(得分:2)

np.vstack是要走的路,之后你只需要添加一个换位步骤。

c = np.vstack((a, b)).T
print(c)    
array([[ 1,  6],
       [ 2,  7],
       [ 3,  8],
       [ 4,  9],
       [ 5, 10]])

print(c.shape)
(5, 2)

作为djk47463 mentioned,您还可以使用np.array构造函数(如果他们决定发布,将会删除):

c = np.array([a,b]).T
print(c) 
array([[ 1,  6],
       [ 2,  7],
       [ 3,  8],
       [ 4,  9],
       [ 5, 10]])

答案 1 :(得分:2)

Newish np.stack可以更好地控制新轴:

In [37]: a = [1,2,3,4,5]
In [38]: b = [6,7,8,9,10]
In [39]: np.stack((a,b), axis=1)
Out[39]: 
array([[ 1,  6],
       [ 2,  7],
       [ 3,  8],
       [ 4,  9],
       [ 5, 10]])
In [40]: _.shape
Out[40]: (5, 2)

使用默认axis=0,其行为类似np.array,生成(2,5)数组。

vstack文档说明:

  

此功能继续支持向后兼容,但是   您应该更喜欢np.concatenatenp.stacknp.stack   功能已添加到NumPy 1.10中。

我认为这夸大了案例,但stack仍然是我最喜欢的新功能之一。我还建议查看这样的函数的Python代码。大多数人在摆弄输入的尺寸后最终使用concatenate