2009-12-27 97 views

Respuesta

236

Uso tolist():

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

Tenga en cuenta que este convierte los valores de cualquier tipo numpy que puedan tener (por ejemplo np.int32 o np.float32) al "tipo de Python compatibles cercano" (en una lista) . Si desea conservar los tipos de datos numpy, puede llamar a list() en su matriz en su lugar, y terminará con una lista de numpy scalars. (Gracias a Mr_and_Mrs_D por señalarlo en un comentario.)

+0

Si su lista es float32 'tolist' la convertirá en' floats's - probablemente no se desee. El uso de 'list (myarray)' no sufre de esto, ¿por qué preferiríamos 'tolist'? –

+0

@Mr_and_Mrs_D ¿está sugiriendo que, a pesar de tener flotadores en su conjunto, le gustaría que la lista resultante sea enteros? Esa es una pregunta completamente diferente ... y por supuesto tendrías que especificar que a pesar de ser valores float32, todos van a ser integrales. De todos modos, si tuvieras esa situación, supongo que hacer 'myarray.astype (np.int32) .tolist()' sería una opción, y explícito sobre lo que estás tratando de lograr. (Y finalmente, 'list (array_of_type_float32)' no da enteros aquí cuando lo intenté ... así que no sé lo que estás preguntando.) –

+0

Nunca mencioné números enteros - prueba 'float32_array = np.array ([0.51764709], np.float32); print (float32_array.tolist()); print (list (float32_array)) ' –

37

arrays NumPy tienen un tolist method:

In [1]: arr=np.array([[1,2,3],[4,5,6]]) 

In [2]: arr.tolist() 
Out[2]: [[1, 2, 3], [4, 5, 6]] 
3

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

si se desean listas planas, el siguiente método 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` 
Cuestiones relacionadas