array - ¿Convertir la matriz NumPy en la estructura de lista de Python?
tolist() numpy (3)
El método numpy .tolist produce matrices anidadas si la forma de la matriz numpy es 2D.
Si se desean listas planas, el método siguiente 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`
¿Cómo convierto una matriz NumPy a una lista de Python (por ejemplo, [[1,2,3],[4,5,6]]
) y lo hago razonablemente rápido?
Utilice 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 del 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 conservar los tipos de datos numpy, podría llamar a list () en su matriz en su lugar, y terminará con una lista de escalas numpy . (Gracias a Mr_and_Mrs_D por señalarlo en un comentario).
tolist()
funciona bien incluso si se encuentra con una matriz anidada, digamos un DataFrame
pandas;
my_list = [0,1,2,3,4,5,4,3,2,1,0]
my_dt = pd.DataFrame(my_list)
new_list = [i[0] for i in my_dt.values.tolist()]
print(type(my_list),type(my_dt),type(new_list))