2017-05-04 3 views
0

Ich möchte ein numpy array erstellen, um es mit numpy arrays zu füllen. zum Beispiel:erstellen numpy Array mit unterschiedlicher Form

a = [] (simple array or numpy array) 
b = np.array([[5,3],[7,9],[3,8],[2,1]]) 
a = np.concatenate([a,b]) 
c = np.array([[1,2],[2,9],[3,0]]) 
a = np.concatenate([a,c]) 

würde Ich mag, dies zu tun, weil ich WAV-Dateien haben, von denen ich einige Merkmale extrahieren, damit ich nicht aus zwei Dateien gleichzeitig aber iterativ lesen kann. Wie kann ich ein leeres ND-Array mit der zweiten Dimension z. a.shape = (x,2) oder wie kann ich die Arrays auch ohne die Erstellung eines "Speicher" -Arrays verketten?

+0

'a = np.lepty ((0, 2))'. – Psidom

+1

Der Versuch, "konkatenate" inkrementell aufzurufen, ist wirklich sehr langsam. Es ist besser, eine Liste von Arrays zu erstellen, um sie zu verketten und dann alle gleichzeitig zu "verketten". – user2357112

+0

@Psidom Danke. – stefos

Antwort

1

Eigentlich gibt es zwei Optionen. Die erste ist: a = np.empty ((0, 2)), die ein leeres np-Array mit der ersten Dimension erzeugt. Die zweite besteht darin, ein leeres Array zu erstellen a = [], fügen Sie die np-Arrays in das Array und verwenden Sie dann np.vstack, um sie alle am Ende miteinander zu verketten. Letzteres ist die effizienteste Option.

0

Sie haben Klammern in verketten Funktion haben:

b = np.array([[5,3],[7,9],[3,8],[2,1]]) 
c = np.array([[1,2],[2,9],[3,0]]) 
a = np.concatenate([b,c]) 

Ausgang:

[[5 3] 
[7 9] 
[3 8] 
[2 1] 
[1 2] 
[2 9] 
[3 0]]