Come faccio a convertire un array NumPy in un Elenco Python (ad esempio [[1,2,3],[4,5,6]]
) e farlo in modo ragionevolmente veloce?
Come faccio a convertire un array NumPy in un Elenco Python (ad esempio [[1,2,3],[4,5,6]]
) e farlo in modo ragionevolmente veloce?
Risposte:
Utilizzare tolist()
:
import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]
Si noti che ciò converte i valori di qualunque tipo intorpidito che possono avere (ad esempio np.int32 o np.float32) nel "tipo Python compatibile più vicino" (in un elenco). Se si desidera preservare i tipi di dati numpy, è possibile chiamare list () sull'array e si otterrà un elenco di scalari numpy . (Grazie a Mr_and_Mrs_D per averlo sottolineato in un commento.)
myarray.astype(np.int32).tolist()
sarebbe un'opzione ed esplicito su ciò che stai cercando di realizzare. (E, infine, list(array_of_type_float32)
non fornisce numeri interi qui quando l'ho provato ... quindi non so cosa mi stai chiedendo.)
float32_array = np.array([0.51764709], np.float32); print(float32_array.tolist()); print(list(float32_array))
np.array([[0, 'one'], ['two', 3]]).tolist() -> [['0', 'one'], ['two', '3']]
Il metodo numty .tolist produce elenchi nidificati se la forma dell'array numpy è 2D.
se si desiderano elenchi flat, 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`
someList = [list(map(int, input().split())) for i in range(N)]
c = np.array ([[1,2,3], [4,5,6]])
list(c.flatten())
tolist
, la convertirà infloats
s - probabilmente non è desiderato. L'usolist(myarray)
non ne risente: perché dovremmo preferiretolist
?