2017-04-21 168 views
0

我有以下问题。我想在一个循环扩展numpy的阵列,使每个阵列从下一个分隔像a=[[1,2,3,4,5],[1,2,3,4,5]],b=[[1,2,3,4,5],[1,2,3,4,5]]-->[[[1,2,3,4,5],[1,2,3,4,5]],[[1,2,3,4,5],[1,2,3,4,5]]]追加Numpy阵列

我迄今为止的做法:

count=0 
for i in range(int(max(allCoo[:,4]))+1): 

     mask1 = allCoo[:,4] == count 
     if count>0: 
      trackList=np.vstack((trackList,np.array((allCoo[mask1])))) 
     else: 
      trackList=np.array((allCoo[mask1])) 

     count+=1 

但是,这只是给我的东西,如:[[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]

最好的问候

+0

将数组收集到列表或列表的列表中,并在末尾执行'stack/concatenate'。 – hpaulj

回答

2

你想用dstack而不是vstack如果你想要一个新的层面

p.dstack([a,b]).swapaxes(1,2) 

array([[[1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5]], 

     [[1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5]]]) 

np.vstack([a,b]) 

array([[1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5]]) 
+0

很好,谢谢。但是对于具有不同数组维度的数组,如np.dstack(([[[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4, 5]],[[1,2,3,4,5],[1,2,3,4,5]]]))。swapaxes(1,2)。这里我得到的错误:ValueError:除了连接轴之外的所有输入数组维度必须完全匹配 – Varlor

+1

该输出将是一个不规则数组(因为第二维不会被修复),因此不会是有效的'numpy'阵列。然后你最好制作一个数组列表。 –

+0

'np.stack'是一个更新的函数,在添加新维度时具有更大的灵活性。 – hpaulj