Python-numpy-array numpy arrays
Ich hab ein problem das auf die Schaffung eines numpy-array numpy-arrays.
Würde ich es schaffen, in eine Schleife:
a=np.array([])
while(...):
...
b= //a numpy array generated
a=np.append(a,b)
...
Gewünschte Ergebnis:
[[1,5,3], [9,10,1], ..., [4,8,6]]
Reales Ergebnis:
[1,5,3,9,10,1,... 4,8,6]
Ist es möglich? Ich weiß nicht, die endgültige dimension des Arrays, deshalb kann ich nicht initialisieren es mit einer festen dimension.
InformationsquelleAutor Stefano Sandonà | 2015-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nie Anhängen zu
numpy
arrays in einer Schleife: es ist das ein Vorgang, der NumPy ist sehr schlecht im Vergleich mit grundlegenden Python. Dies ist, weil Sie eine vollständige Kopie der Daten jedesappend
, die Kosten, die Sie quadratische Zeit.Stattdessen fügen Sie einfach Ihre arrays zu einer Python-Liste, und konvertieren Sie es am Ende; das Ergebnis ist einfacher und schneller:
Als dafür, warum der code nicht funktioniert:
np.append
verhält sich nicht wielist.append
überhaupt. Insbesondere wird es nicht schaffen neue Dimensionen beim Anhängen. Hätten Sie zum erstellen der anfänglichen array mit zwei Dimensionen, dann fügen Sie mit einem expliziten Achse argument.Können Sie erraten, wie viele Elemente, die Sie haben, und preallocate ein genügend großes array? Wenn nicht, haben Sie vielleicht zu bekommen, sehr clever, wie das bauen der Ausgabe-array in Blöcken oder so etwas.
Sie sollten auch in der Lage sein, um preallocate mit einem größeren array, dann mit einem Blick, dass der array am Ende, wenn Sie wissen, wie viele Elemente tatsächlich vorhanden sind.
Schließlich folgte ich Eure Vorschläge! Danke!
InformationsquelleAutor nneonneo