2016-03-20 12 views
2

Vielleicht eine einfache Fragen, aber ich benutze numpy, und iterativ generieren 9x9x9 Matrizen.Hinzufügen von Matrizen zu n-dimensionalen Array mit numpy

Ich möchte diese stapeln, so dass ich mit Nx9x9x9 enden, aber mit append, stack und stack scheint es eine der Dimensionen zu vektorisieren, anstatt diese als einzelne Objekte hinzuzufügen. irgendwelche Ideen wie ich das machen kann?

dank

Antwort

2

Dies könnte np.vstack aber bekommen diese in der Form, die Sie eine weitere Dimension hinzufügen müssen verwenden möchten gelöst werden (ein leerer) als erste. Andernfalls würden Sie Sie aktuelle erste Dimension stapeln:

import numpy as np 
a = np.ones((1,2,2,2)) 
print(a.shape) # (1, 2, 2, 2) 

oder wenn Sie Ihre Arrays erstellen und dann eine weitere Dimension hinzuzufügen:

a = np.ones((2,2,2)) 
a = a[None, :] # Adds an dimension as first 

und dann zu stapeln Sie nutzen könnten:

b = np.vstack([a,a]) 
print(b.shape) # (2, 2, 2, 2) 
c = np.vstack([b,a]) 
print(c.shape) # (3, 2, 2, 2) 
c.shape 

Sie haben gesagt, Sie erstellen sie iterativly, aber wenn Sie nur das Endergebnis am Ende benötigen, müssen Sie nicht einmal vstack nur ein neues Array erstellen:

a = np.ones((9,9,9)) 
b = np.ones((9,9,9)) 
c = np.ones((9,9,9)) 
d = np.ones((9,9,9)) 
res = np.array([a, b, c, d]) 
print(res.shape) # (4, 9, 9, 9) 
+0

Vielen Dank :) Ich wusste nicht, wie ich meiner dreidimensionalen Matrix eine zusätzliche Dimension hinzufügen kann! Sehr hilfreich – JB1

+1

@ i-am-spartacus Gern geschehen! Wenn dies Ihr Problem wirklich löst, wäre es nett, wenn Sie die Antwort aufwerten oder akzeptieren würden. :) – MSeifert

+0

Die zweite Sache, die ich heute gelernt habe ... Danke nochmal! – JB1