¿Cómo convierto una lista simple de listas en una matriz numpy? Las filas son sublistas individuales y cada fila contiene los elementos en la sublista.
183
Si su lista de listas contiene listas con un número variable de elementos, entonces la respuesta de Ignacio Vázquez-Abrams no funcionará. En cambio, hay al menos 3 opciones:
1) Hacer una matriz de matrices:
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) Haz una serie de listas:
x=[[1,2],[1,2,3],[1]]
y=numpy.array(x)
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'list'>
3) Primero haga que las listas tengan la misma longitud:
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
también funciona, se convertiráNone
anp.nan
, lo que puede ser útil.fuente
Como esta es la búsqueda principal en Google para convertir una lista de listas en una matriz Numpy, ofreceré lo siguiente a pesar de que la pregunta tiene 4 años:
Cuando pensé por primera vez en hacerlo de esta manera, me quedé bastante satisfecho porque es muy simple. Sin embargo, después de cronometrarlo con una lista más grande de listas, en realidad es más rápido hacer esto:
Tenga en cuenta que la respuesta # 1 de @ Bastiaan no hace una sola lista continua, por lo tanto, agregué el
concatenate
.De todos modos ... prefiero el
hstack
enfoque por su elegante uso de Numpy.fuente
Es tan simple como:
fuente
Nuevamente, después de buscar el problema de convertir listas anidadas con N niveles en una matriz N-dimensional, no encontré nada, así que he aquí mi solución:
fuente
[...[...[...]]]
parte. Solo necesitas llamarnp.array
, conndmin=number-of-list-layers
. (aunque en mi caso lo necesitabandmin=number-of-list-layers-minus-1
por alguna razón, de lo contrario, creé una capa adicional - necesito investigar)np.array
"envolver" esas listas más profundas en lugar de convertirlas en matrices numpy.Tenía una lista de listas de igual longitud. Incluso
Ignacio Vazquez-Abrams
la respuesta de entonces no funcionó para mí. Tengo una matriz numpy 1-D cuyos elementos son listas. Si enfrentó el mismo problema, puede usar el siguiente métodoUtilizar
numpy.vstack
fuente
Solo usa pandas
esto solo funciona para una lista de listas
si tiene una lista de listas de listas, puede probar algo similar a
fuente