2017-06-13 99 views
1

假设我有许多numpy的数组:在一个数组中连接多个numpy数组?

a = ([1,2,3,4,5]) 
b = ([2,3,4,5,6]) 
c = ([3,4,5,6,7]) 

,我想产生一个新的2-d数组:

d = ([[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7]]) 

我应该在代码? 我试着用:

d = np.concatenate((a,b),axis=0) 
d = np.concatenate((d,c),axis=0) 

它返回:

d = ([1,2,3,4,5,2,3,4,5,6,3,4,5,6,7]) 
+1

尝试'numpy.vstack':'np.vstack((a,b,c))'。 – Divakar

+2

另外'np.array([a,b,c])''和'np.stack([a,b,c])''。两者连接在一个新维度上。 – hpaulj

回答

1

正如在评论中提到,你可以只使用np.array功能:

>>> import numpy as np 
>>> a = ([1,2,3,4,5]) 
>>> b = ([2,3,4,5,6]) 
>>> c = ([3,4,5,6,7]) 

>>> np.array([a, b, c]) 
array([[1, 2, 3, 4, 5], 
     [2, 3, 4, 5, 6], 
     [3, 4, 5, 6, 7]]) 

在一般情况下要基于“尚未存在的”维度堆栈,还可以使用np.stack

>>> np.stack([a, b, c], axis=0) 
array([[1, 2, 3, 4, 5], 
     [2, 3, 4, 5, 6], 
     [3, 4, 5, 6, 7]]) 

>>> np.stack([a, b, c], axis=1) # not what you want, this is only to show what is possible 
array([[1, 2, 3], 
     [2, 3, 4], 
     [3, 4, 5], 
     [4, 5, 6], 
     [5, 6, 7]])