Wie konvertiere ich 2d Liste in 2d Numpy Array?


84

Ich habe so etwas wie eine 2D-Liste

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

und ich möchte es in ein 2d numpy Array konvertieren. Können wir es tun, ohne Speicher wie zuzuweisen

numpy.zeros((3,3))

und dann Werte speichern?


@ Donkopotamus, es war ein Fehler von mir ... Ich gab eine Sequenz ... Ich tat das gleiche, bekam aber den Fehler. Nachdem ich den gleichen Code von hier erhalten habe, habe ich überprüft, wo sich das Problem befindet.
Shan

Antworten:


87

Übergeben Sie die Liste einfach an np.array:

a = np.array(a)

Sie können diese Gelegenheit auch nutzen, um festzulegen, dtypeob die Standardeinstellung nicht Ihren Wünschen entspricht.

a = np.array(a, dtype=...)

107
Diese Lösung funktioniert nicht. Sie erhalten eine Reihe von Python-Listen.
user1816847

47
@ user1816847 Dies geschieht nur, wenn sich die Unterlisten in der Länge unterscheiden (z. B.: [[1,2], [1,2], [1,2,3]]. Dies funktioniert mit dem in der Frage angegebenen Beispiel.
Compie

5
Wenn die Unterarrays nicht dieselbe Länge haben, erhalten Sie mit dieser Lösung nur ein numpy-Array von Listen (dh die inneren Listen werden nicht in numpy-Arrays konvertiert). Das ist absolut sinnvoll, da Sie kein 2D-Array (Matrix) mit variabler 2. Dimension haben können.
AHA

Vielen Dank ab September 2017 (Ubuntu 16.04 LTS). Das brauchte ich. Viel einfacher als erwartet.
SDsolar

1
Vielen Dank für die wichtige Antwort, @compie
iedmrc

2

Ich verwende große Datenmengen, die im Formular in eine Python-Datei exportiert wurden

XVals1 = [.........] 
XVals2 = [.........] 

Jede Liste hat die gleiche Länge. ich benutze

>>> a1 = np.array(SV.XVals1)

>>> a2 = np.array(SV.XVals2)

Dann

>>> A = np.matrix([a1,a2])

Was ist 'SV' hier
gocen

2

Verwenden Sie einfach den folgenden Code

c = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
matrix([[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])

Dann wird es dir geben

Sie können Form und Abmessung der Matrix mithilfe des folgenden Codes überprüfen

Form

c.ndim


2

np.array()ist noch mächtiger als das, was unutbu oben gesagt hat. Sie können es auch verwenden, um eine Liste von np-Arrays in ein Array mit höherer Dimension zu konvertieren. Das folgende Beispiel ist einfach:

aArray=np.array([1,1,1])

bArray=np.array([2,2,2])

aList=[aArray, bArray]

xArray=np.array(aList)

xArrays Form ist (2,3), es ist ein Standard-NP-Array. Diese Operation vermeidet eine Schleifenprogrammierung.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.