¿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?
298
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).
tolist
, la convertirá enfloats
s, probablemente no sea lo que desee. El usolist(myarray)
no sufre de esto, ¿por qué deberíamos preferirtolist
?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.
fuente
tolist()
funciona bien incluso si encuentra una matriz anidada, digamos pandasDataFrame
;fuente
someList = [list(map(int, input().split())) for i in range(N)]
fuente
c = np.array ([[1,2,3], [4,5,6]])
fuente