¿Cómo convierto una matriz NumPy en una lista de Python (por ejemplo [[1,2,3],[4,5,6]]
) y lo hago razonablemente rápido?
¿Cómo convierto una matriz NumPy en una lista de Python (por ejemplo [[1,2,3],[4,5,6]]
) y lo hago razonablemente rápido?
Respuestas:
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 esto convierte los valores de cualquier 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 preservar los tipos de datos numpy, puede llamar a list () en su matriz en su lugar, y terminará con una lista de escalares numpy . (Gracias a Mr_and_Mrs_D por señalar eso en un comentario).
myarray.astype(np.int32).tolist()
sería una opción explícita sobre lo que estás tratando de lograr. (Y, por último, list(array_of_type_float32)
no da enteros aquí cuando lo intenté ... así que no sé lo que estás preguntando).
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']]
El método numpy .tolist produce listas anidadas si la forma de la matriz 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`
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á enfloats
s, probablemente no sea lo que desee. El usolist(myarray)
no sufre de esto, ¿por qué deberíamos preferirtolist
?