2017-04-21 7 views
0

Ich habe das folgende Problem. Ich möchte ein numpy Array in einer Schleife erweitern, so dass jedes Array von der nächsten wie 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]]]Append Numpy Arrays

Mein Ansatz getrennt ist so weit:

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 

Aber gib mir nur Dinge wie: [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]

Mit freundlichen Grüßen

+0

Sammeln Sie die Arrays in einer Liste oder Liste von Listen, und führen Sie am Ende einmal den Befehl "stack/concatenate" aus. – hpaulj

Antwort

2

Sie wollen dstack statt vstack verwenden, wenn Sie eine neue Dimension

wollen
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

Schön danke. Aber was ist für Arrays mit verschiedenen Array-Duminesions wie 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). Hier bekomme ich den Fehler: ValueError: Alle Input-Array-Dimensionen mit Ausnahme der Verkettungsachse müssen exakt übereinstimmen – Varlor

+1

Diese Ausgabe wäre ein zackiges Array (da die zweite Dimension nicht fixiert wäre) und wäre somit kein gültiges 'numpy' Array. Sie würden dann besser eine Liste von Arrays erstellen. –

+0

'np.stack' ist eine neuere Funktion mit mehr Flexibilität beim Hinzufügen dieser neuen Dimension. – hpaulj