Wie konvertiere ich eine einfache Liste von Listen in ein Numpy-Array? Die Zeilen sind einzelne Unterlisten und jede Zeile enthält die Elemente in der Unterliste.
182
Wenn Ihre Listenliste Listen mit unterschiedlicher Anzahl von Elementen enthält, funktioniert die Antwort von Ignacio Vazquez-Abrams nicht. Stattdessen gibt es mindestens 3 Optionen:
1) Erstellen Sie ein Array von Arrays:
x=[[1,2],[1,2,3],[1]]
y=numpy.array([numpy.array(xi) for xi in x])
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'numpy.ndarray'>
2) Erstellen Sie eine Reihe von Listen:
x=[[1,2],[1,2,3],[1]]
y=numpy.array(x)
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'list'>
3) Machen Sie zuerst die Listen gleich lang:
x=[[1,2],[1,2,3],[1]]
length = max(map(len, x))
y=numpy.array([xi+[None]*(length-len(xi)) for xi in x])
y
>>>array([[1, 2, None],
>>> [1, 2, 3],
>>> [1, None, None]], dtype=object)
dtype=float
Auch arbeitet, konvertiert esNone
zunp.nan
, die nützlich sein können.quelle
Da dies die häufigste Suche bei Google ist, um eine Liste von Listen in ein Numpy-Array zu konvertieren, biete ich Folgendes an, obwohl die Frage 4 Jahre alt ist:
Als ich daran dachte, es so zu machen, war ich ziemlich zufrieden mit mir selbst, weil es soooo einfach ist. Nach dem Timing mit einer größeren Liste von Listen ist dies jedoch tatsächlich schneller:
Beachten Sie, dass @ Bastiaans Antwort Nr. 1 keine einzige fortlaufende Liste enthält, daher habe ich die hinzugefügt
concatenate
.Wie auch immer ... Ich bevorzuge den
hstack
Ansatz für die elegante Verwendung von Numpy.quelle
Es ist so einfach wie:
quelle
Nachdem ich nach dem Problem gesucht hatte, verschachtelte Listen mit N Ebenen in ein N-dimensionales Array zu konvertieren, habe ich wieder nichts gefunden.
quelle
[...[...[...]]]
Teil nicht benötigen, wenn Sie bereits über die Struktur verschachtelter Listen verfügen . Sie müssen nur anrufennp.array
, mitndmin=number-of-list-layers
. (obwohl ich in meinem Fallndmin=number-of-list-layers-minus-1
aus irgendeinem Grund eine zusätzliche Ebene erstellt habe - muss untersucht werden)np.array
, dass diese tiefsten Listen nur "umbrochen" wurden, anstatt sie in numpy Arrays umzuwandeln.Ich hatte eine Liste von Listen gleicher Länge. Sogar dann
Ignacio Vazquez-Abrams
die Antwort für mich nicht geklappt. Ich habe ein 1-D-Numpy-Array, dessen Elemente Listen sind. Wenn Sie mit demselben Problem konfrontiert waren, können Sie die folgende Methode verwendenVerwenden
numpy.vstack
quelle
Benutze einfach Pandas
Dies funktioniert nur für eine Liste von Listen
Wenn Sie eine Liste mit Listen haben, möchten Sie vielleicht etwas in der Art von ausprobieren
quelle