2011-10-10 18 views
53

Ho una lista 2D qualcosa comecome convertire la lista 2d in array 2p numpy?

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

e voglio convertirlo in un allineamento NumPy 2d. Possiamo farlo senza allocare memoria come

numpy.zeros((3,3)) 

e quindi memorizzare valori su di esso?

+0

@Donkopotamus, è stato un errore da parte mia ... stavo dando una sequenza ... Stavo facendo lo stesso ma ottenendo l'errore. Dopo aver ottenuto lo stesso codice da qui, ho controllato dove si trova il problema ... Quindi aiuta ... in caso contrario, controllo la documentazione prima di postare qui ... Grazie per il promemoria amichevole. – Shan

risposta

63

basta passare l'elenco a np.array:

a = np.array(a) 

si può anche prendere questa occasione per impostare il dtype se il default non è ciò che si desidera.

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

questa soluzione non funziona. otterrai una serie numerica di liste python. – user1816847

+16

@ user1816847 Ciò accade solo quando le liste "sub" differiscono per lunghezza (ad es .: [[1,2], [1,2], [1,2,3]]. Funziona con l'esempio fornito nella domanda – compie

+1

Se gli array secondari non hanno la stessa lunghezza, questa soluzione fornirà solo una serie numerica di elenchi (cioè gli elenchi interni non verranno convertiti in array numpy). Il che ha senso in quanto non si può avere un Matrice 2D (matrice) con seconda grandezza variabile – AHA

1

Sto usando grandi insiemi di dati esportati in un file python in forma

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

Ogni lista è di lunghezza identica. Io uso

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

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

Poi

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

np.array() è ancora più potente di quello che unutbu detto sopra. Si potrebbe anche usare per convertire un elenco di array NP a un array dimention superiore, il seguente è un semplice esempio:

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

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

aList=[aArray, bArray] 

xArray=np.array(aList) 

forma di xArray è (2,3), è una matrice np standard. Questa operazione evita una programmazione del ciclo.

1

basta usare seguente codice

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

Poi vi darà

è possibile controllare la forma e dimensione della matrice utilizzando seguente codice

c.shape

c.ndim

Problemi correlati