2011-10-10 15 views
53

Tengo una lista 2D algo así comocómo convertir 2d list a 2d numpy array?

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

y quiero convertirlo en una matriz numpy 2d. ¿Podemos hacerlo sin asignar memoria como

numpy.zeros((3,3)) 

y luego almacenarle valores?

+0

@Donkopotamus, que fue un error por mí ... yo estaba dando una secuencia ... Estaba haciendo lo mismo pero obtengo el error. Después de obtener el mismo código de aquí, verifiqué dónde está el problema ... Por lo tanto, es útil ... por supuesto, consulto la documentación antes de publicarla aquí ... Gracias por el recordatorio. – Shan

Respuesta

63

sólo tiene que pasar la lista a np.array:

a = np.array(a) 

También puede aprovechar esta oportunidad para establecer el dtype si el defecto no es lo que desea.

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

esta solución no funciona. Obtendrás una matriz numpy de listas de Python. – user1816847

+16

@ user1816847 Eso sólo sucede cuando las listas 'sub' difieren en longitud (por ejemplo:. [[1,2], [1,2], [1,2,3]] que hace el trabajo con el ejemplo dado en la pregunta . – compie

+1

Si las sub-matrices no tienen la misma longitud, esta solución solo le dará una matriz numpy de listas (es decir, las listas internas no se convertirán en matrices numpy). Lo cual tiene mucho sentido ya que no puede tener una matriz 2D (matriz) con la segunda dimensión variable. – AHA

1

estoy usando grandes conjuntos de datos exportados a un archivo Python en forma

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

Cada lista es de idéntica longitud. Yo uso

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

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

Entonces

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

np.array() es aún más poderoso que lo que se ha dicho anteriormente unutbu. También puede utilizarlo para convertir una lista de matrices np a una matriz Dimensión superior, el siguiente es un ejemplo sencillo:

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

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

aList=[aArray, bArray] 

xArray=np.array(aList) 

forma de Xarray es (2,3), que es una matriz NP estándar. Esta operación evita una programación de bucle.

1

sólo tiene que utilizar el código siguiente

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

A continuación, se le dará

puede comprobar la forma y dimensión de la matriz mediante el uso siguiente código

c.shape

c.ndim

Cuestiones relacionadas