Im Allgemeinen können Sie eine ganze Folge von Arrays entlang einer beliebigen Achse verketten:
numpy.concatenate( LIST, axis=0 )
aber Sie tun müssen , um Sorgen über die Form und Dimensionalität jeder Anordnung in der Liste (für einen 2-dimensionalen 3x5 - Ausgang, müssen Sie sicherstellen , dass sie alle sind 2-dimensionaler n-by-5 - Arrays bereits). Wenn Sie eindimensionale Arrays als Zeilen einer zweidimensionalen Ausgabe verketten möchten, müssen Sie deren Dimensionalität erweitern.
Wie Jorges Antwort zeigt, gibt es auch die Funktion stack
, die in Numpy 1.10 eingeführt wurde:
numpy.stack( LIST, axis=0 )
Dies erfolgt nach dem komplementären Ansatz: Es wird eine neue Ansicht jedes Eingabearrays erstellt und vor dem Verketten eine zusätzliche Dimension n
hinzugefügt (in diesem Fall links, sodass jedes Element-1D-Array zu einem 1-mal- n
2D-Array wird). Dies funktioniert nur, wenn alle Eingabearrays dieselbe Form haben - auch entlang der Verkettungsachse.
vstack
(oder gleichwertig row_stack
) ist häufig eine benutzerfreundlichere Lösung, da eine Folge von 1- und / oder 2-dimensionalen Arrays verwendet wird und die Dimensionalität bei Bedarf und nur bei Bedarf automatisch erweitert wird, bevor die gesamte Liste zusammengefügt wird. Wenn eine neue Dimension erforderlich ist, wird sie links hinzugefügt. Auch hier können Sie eine ganze Liste auf einmal verketten, ohne sie wiederholen zu müssen:
numpy.vstack( LIST )
Dieses flexible Verhalten zeigt auch die syntaktische Verknüpfung numpy.r_[ array1, ...., arrayN ]
(beachten Sie die eckigen Klammern). Dies ist gut für die Verkettung einiger explizit benannter Arrays, aber nicht gut für Ihre Situation, da diese Syntax keine Folge von Arrays wie Ihre akzeptiert LIST
.
Es gibt auch eine analoge Funktion column_stack
und Verknüpfung c_[...]
für das horizontale (spaltenweise) Stapeln sowie eine fast analoge Funktion - hstack
obwohl letztere aus irgendeinem Grund weniger flexibel ist (sie ist strenger in Bezug auf die Dimensionalität der Eingabearrays und versucht zu verketten 1-D-Arrays Ende-zu-Ende, anstatt sie als Spalten zu behandeln).
Schließlich funktioniert im speziellen Fall des vertikalen Stapelns von 1-D-Arrays auch Folgendes:
numpy.array( LIST )
... weil Arrays aus einer Folge anderer Arrays erstellt werden können und dem Anfang eine neue Dimension hinzugefügt wird.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
Dies ist keine korrekte Python-Syntax. Bitte klären Sie.