2009-12-27 18 views

risposta

236

Uso tolist():

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

Si noti che questo converte i valori da qualsiasi tipo NumPy che possono avere (ad esempio np.int32 o np.float32) per il "più vicino tipo Python compatibile" (in una lista) . Se si desidera conservare i tipi di dati numpy, è possibile chiamare list() sull'array e verrà visualizzato un elenco di numpy scalars. (Grazie a Mr_and_Mrs_D per la segnalazione in commenti.)

+0

Se la tua lista è float32 'tolist' la convertirà in' floats's - probabilmente non è quella desiderata. L'uso di 'list (myarray)' non ne risente - perché dovremmo preferire 'tolist'? –

+0

@Mr_and_Mrs_D stai suggerendo che, nonostante abbia fluttuazioni nell'array, ti piacerebbe che l'elenco risultante fosse integer? Questa è una domanda completamente diversa ... e ovviamente dovresti specificare che, nonostante siano valori float32, saranno tutti parte integrante. Ad ogni modo, se tu avessi quella situazione, suppongo che facendo 'myarray.astype (np.int32) .tolist()' sarebbe un'opzione ed esplicita su cosa stai cercando di realizzare. (E infine, 'list (array_of_type_float32)' non fornisce interi qui quando l'ho provato ... quindi non so cosa stai chiedendo.) –

+0

Non ho mai menzionato gli interi: prova 'float32_array = np.array ([0.51764709], np.float32); stampa (float32_array.tolist()); print (list (float32_array)) ' –

37

array NumPy hanno 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

Procedimento .ToList NumPy produce matrici nidificate se la forma matrice NumPy è 2D.

se sono desiderati elenchi piani, il metodo seguente funziona.

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` 
Problemi correlati