jak przekonwertować listę 2d do tablicy numpy 2D?


85

Mam coś w rodzaju listy 2D

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

i chcę go przekonwertować na tablicę numpy 2d. Czy możemy to zrobić bez przydzielania pamięci typu

numpy.zeros((3,3))

a następnie przechowywanie w nim wartości?


@Donkopotamus, to był mój błąd ... Podałem sekwencję ... Robiłem to samo, ale otrzymywałem błąd. Po tym, jak dostałem ten sam kod stąd, sprawdziłem, gdzie jest problem ... Więc to pomaga ... oczywiście, przed wysłaniem tutaj sprawdzam dokumentację ... Dzięki za przyjazne przypomnienie.
Shan,

Odpowiedzi:


90

Po prostu przekaż listę do np.array:

a = np.array(a)

Możesz również skorzystać z tej okazji, aby ustawić, dtypejeśli wartość domyślna nie jest taka, jak chcesz.

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

109
to rozwiązanie nie działa. otrzymasz numpy tablicę list Pythona.
user1816847

49
@ user1816847 Dzieje się tak tylko wtedy, gdy listy „sub” różnią się długością (np .: [[1,2], [1,2], [1,2,3]]. Działa to z przykładem podanym w pytaniu.
compie

5
Jeśli tablice podrzędne nie mają tej samej długości, to rozwiązanie da ci tylko tablicę numpy list (tj. Listy wewnętrzne nie zostaną przekonwertowane na tablice numpy). Co całkowicie ma sens, ponieważ nie można mieć tablicy 2D (macierzy) ze zmiennym drugim wymiarem.
AHA

Dziękuję od września 2017 (Ubuntu 16.04 LTS). To jest to, czego potrzebowałem. Dużo prostsze niż przewidywano.
SDsolar

1
Dzięki za ważną odpowiedź, @compie
iedmrc

2

Używam dużych zestawów danych wyeksportowanych do pliku Pythona w formularzu

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

Każda lista ma taką samą długość. używam

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

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

Następnie

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

Co to jest „SV” tutaj
gocen

2

po prostu użyj następującego kodu

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

Wtedy ci to da

możesz sprawdzić kształt i wymiary matrycy używając poniższego kodu

c. kształt

c.ndim


2

np.array()jest jeszcze potężniejszy niż to, co powiedział unutbu powyżej. Możesz go również użyć do konwersji listy tablic np na tablicę o wyższych wymiarach, poniżej znajduje się prosty przykład:

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

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

aList=[aArray, bArray]

xArray=np.array(aList)

Kształt xArray to (2,3), jest to standardowa tablica np. Ta operacja pozwala uniknąć programowania w pętli.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.