Come si converte un semplice elenco di elenchi in una matrice numpy? Le righe sono sottoliste individuali e ogni riga contiene gli elementi nella sottolista.Elenco di elenchi in serie numpy
risposta
>>> numpy.array([[1, 2], [3, 4]])
array([[1, 2], [3, 4]])
E 'semplice come:
>>> lists = [[1, 2], [3, 4]]
>>> np.array(lists)
array([[1, 2],
[3, 4]])
Se l'elenco delle liste ha liste con numero di elementi rispetto alla risposta di Ignacio Vazquez-Abrams non funzioneranno variabile. Invece ci sono 3 opzioni:
1) Fai un array di array:
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) Fai una serie di liste:
x=[[1,2],[1,2,3],[1]]
y=numpy.array(x)
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'list'>
3) Prima di tutto le liste uguale in lunghezza:
x=[[1,2],[1,2,3],[1]]
length = len(sorted(x,key=len, reverse=True)[0])
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)
Grazie, sono venuto qui per questo. Ho usato numpy per un po 'e ho trovato questo comportamento non banale. Grazie per aver dedicato del tempo a spiegare questo caso più generale. –
Pollice in su per questa risposta! – alisa
Poiché questa è la ricerca principale su Google per la conversione di un elenco di elenchi in un array Numpy, offrirò i seguenti nonostante la domanda sia di 4 anni:
>>> x = [[1, 2], [1, 2, 3], [1]]
>>> y = numpy.hstack(x)
>>> print(y)
[1 2 1 2 3 1]
Quando ho pensato di fare in questo modo, sono stato molto soddisfatto di me stesso perché è soooo semplice. Tuttavia, dopo la sincronizzazione con una più grande lista di liste, in realtà è più veloce per fare questo:
>>> y = numpy.concatenate([numpy.array(i) for i in x])
>>> print(y)
[1 2 1 2 3 1]
noti che @ risposta di Bastiaan # 1 non fa una sola lista continua, quindi ho aggiunto il concatenate
.
Comunque ... Preferisco l'approccio hstack
per il suo elegante uso di Numpy.
Anche in questo caso, dopo aver cercato per il problema della conversione di liste annidate con livelli di N in un array N-dimensionale non ho trovato nulla, ecco il mio modo intorno ad esso:
import numpy as np
new_array=np.array([[[coord for coord in xk] for xk in xj] for xj in xi], ndmin=3) #this case for N=3
- 1. Serie tridimensionale in numpy
- 2. serie affettare in NumPy
- 3. Elenco di elenchi vs dizionario
- 4. Dizionario in una serie numpy?
- 5. Trova tratti di Trues in serie numpy
- 6. Serie numpy immutabile?
- 7. Numpy 1-caldo serie
- 8. Converti lista in tupla in serie numpy?
- 9. Elenco di elenchi di binding in XAML?
- 10. Converti un elenco di elenchi in un elenco di interi
- 11. veloce conversione di IplImage di serie Numpy
- 12. Elenco collegato di elenchi collegati in Java
- 13. Accesso all'elemento in un elenco di elenchi
- 14. Trova vettore ordinato in serie numpy
- 15. Trim/strip zeros di una serie numpy
- 16. Lettura di dati in serie numpy dal file di testo
- 17. Elenco di elenchi di tipi diversi
- 18. Elenchi univoci da un elenco
- 19. Scambiare due elenchi secondari in un elenco
- 20. Splitting un elenco nidificato in due elenchi
- 21. Ricerca di valori mancanti in una serie numpy
- 22. Come calcolare una serie di Fourier in Numpy?
- 23. Conteggio delle occorrenze di colonne in serie numpy
- 24. Posso rinominare i campi in una serie di record numpy
- 25. modo efficiente per convertire NumPy serie record a un elenco di dizionario
- 26. fetta multipla nella lista di indicizzazione per NumPy serie
- 27. Concatenare tranquillamente un elenco di elenchi
- 28. numpy diff su un panda Serie
- 29. Python multiprocessing e condiviso serie NumPy
- 30. Elenchi di elenchi
Il REPL significa tagliare verso il basso su questioni principiante sensibilmente . –
questo converte automaticamente un elenco di liste in un array 2D perché la lunghezza di tutti gli elenchi inclusi è la stessa. Sai come non farlo: creare una serie di liste anche se tutte le liste hanno la stessa lunghezza? Oppure è possibile convertire un array 2D in un array 1D di array 1D (in modo efficiente intendo, nessun metodo iterativo o roba mappa Python) –
Se ciò non funziona per te perché le sottoliste non sono di dimensioni pari, vedi [il risposta successiva] (http://stackoverflow.com/a/26224619/1449460). –