¿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=floattambién funciona, se convertiráNoneanp.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
hstackenfoque 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-1por 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-Abramsla 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.vstackfuente
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