NumPy: Convertir un objeto de NumPy en una lista de Python

Publicado el 06 julio 2021 por Daniel Rodríguez @analyticslane

En esta ocasión vamos a ver los pasos para realizar una operación que posiblemente debamos realizar de forma habitual: convertir un objeto de NumPy en una lista de Python. Pudiendo exportar así los datos para usar en funciones que no pueden trabajar directamente con objetos de NumPy. Siendo el complemento a la creación de arrays en base a listas o tuplas. La conversión se realizará habitualmente mediante el método tolist() presente en los objetos de NumPy.

Convertir un vector de NumPy en una lista

En todos los matrices y vectores de NumPy existe el método tolist() que devuelve el contenido del objeto en una lista de Python. Un método que no tiene opciones, por lo que es bastante fácil de usar. Así, para conseguir la lista equivalente a un vector de NumPy solamente es necesario realizar el siguiente proceso.

import numpy as np

arr = np.array([1, 2, 3])

arr.tolist()
[1, 2, 3]

Con el que se obtiene la lista deseada.

Convertir un vector de NumPy en una lista de listas

El método tolist() también se puede utilizar cuando el objeto contiene una matriz. A diferencia del caso anterior el resultado no es una lista de número, sino que una lista de listas. Al igual que en el caso anterior solamente se tiene que llamar al método para obtener el resultado.

mat = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8 ,9]])

mat.tolist()
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Convertir un vector de NumPy en una lista

Cuando el contenido del objeto NumPy es una matriz puede que no queramos obtener una lista de listas, sino que una lista con los valores. Para solucionar este problema se puede utilizar el método flatten() mediante el cual se puede transforma una objeto NumPy 2D en uno 1D, es decir, transformar una matriz en un vector. Una vez obtenido el vector, solamente se tendría que llamar al método tolist() para obtener la lista deseada. Operación que se puede concatenar en una línea.

mat.flatten().tolist()
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Conclusiones

En esta ocasión hemos visto como se puede usar el método tolist() para transformar un objeto de NumPy en una lista de Python. Operación que posiblemente debamos realizar de forma habitual al trabajar con NumPy.