¿Convertir la matriz NumPy en la estructura de la lista de Python?

¿Cómo convierto una matriz NumPy a una lista de Python (por ejemplo, [[1,2,3],[4,5,6]] ) y lo hago razonablemente rápido?

Utilice tolist() :

 import numpy as np >>> np.array([[1,2,3],[4,5,6]]).tolist() [[1, 2, 3], [4, 5, 6]] 

Tenga en cuenta que esto convierte los valores del tipo de numpy que puedan tener (por ejemplo, np.int32 o np.float32) al “tipo de Python compatible más cercano” (en una lista). Si desea conservar los tipos de datos numpy, podría llamar a list () en su matriz en su lugar, y terminará con una lista de escalas numpy . (Gracias a Mr_and_Mrs_D por señalarlo en un comentario).

El método numpy .tolist produce matrices anidadas si la forma de la matriz numpy es 2D.

Si se desean listas planas, el método siguiente funciona.

 import numpy as np from itertools import chain a = [1,2,3,4,5,6,7,8,9] print type(a), len(a), a npa = np.asarray(a) print type(npa), npa.shape, "\n", npa npa = npa.reshape((3, 3)) print type(npa), npa.shape, "\n", npa a = list(chain.from_iterable(npa)) print type(a), len(a), a` 

tolist() funciona bien incluso si se encuentra con una matriz anidada, digamos un DataFrame pandas;

 my_list = [0,1,2,3,4,5,4,3,2,1,0] my_dt = pd.DataFrame(my_list) new_list = [i[0] for i in my_dt.values.tolist()] print(type(my_list),type(my_dt),type(new_list)) 

someList = [list(map(int, input().split())) for i in range(N)]