HOWTO · NumPy

Convertir NumPy Array en Tuple

Hay dos métodos principales que se pueden usar para convertir un array NumPy en tuplas en Python, la función tuple() y la función map().

En esta página

Convierte un array de NumPy con la función integrada tuple() de Python. Para un array unidimensional, tuple(array) crea una tupla con sus elementos. Si necesitas tuplas anidadas para un array bidimensional, convierte también cada fila. Los ejemplos siguientes muestran ambas estructuras y una alternativa con map().

Convertir un array unidimensional de NumPy en una tupla

tuple() consume un iterable y reúne en una tupla los elementos que este produce. Al iterar sobre un array unidimensional de NumPy se obtienen sus valores; por eso, al pasarlo directamente a tuple(), se obtiene una tupla plana. El siguiente ejemplo usa enteros de NumPy; la forma en que se muestran puede variar según la versión de NumPy.

Ejecuta este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import numpy as np

array = np.array([10, 20, 30])
result = tuple(array)
print(result)
(np.int64(10), np.int64(20), np.int64(30))

Convertir un array bidimensional de NumPy en tuplas anidadas

Al iterar sobre un array bidimensional se obtienen sus filas. Por lo tanto, tuple(matrix) crea una tupla externa cuyos elementos siguen siendo arrays de fila de NumPy. Para convertir también las filas, pasa cada una a tuple(). Así se conserva en el resultado la agrupación original de filas y columnas.

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
result = tuple(tuple(row) for row in matrix)
print(result)
((np.int64(1), np.int64(2)), (np.int64(3), np.int64(4)))

La comprensión realiza la conversión interna una vez por cada fila; luego, la tuple() externa reúne esas tuplas. La forma en que se muestran los escalares de NumPy puede variar según la versión.

Usar map() para convertir cada fila

Puedes expresar la misma operación por filas con map(tuple, matrix). En Python, map() devuelve un iterador, así que debes envolverlo en tuple() para materializar todas las filas convertidas. Es una alternativa concisa cuando solo quieres aplicar tuple() a cada fila.

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
result = tuple(map(tuple, matrix))
print(result)
((np.int64(1), np.int64(2)), (np.int64(3), np.int64(4)))

En este caso, map() convierte filas, no cada valor escalar. Para convertir los valores elemento por elemento, usa otra expresión, como tuple(int(value) for value in array), si quieres convertir los valores de un array unidimensional en enteros de Python. La conversión adecuada depende de si quieres transformar las filas o los valores.

Elegir una conversión adecuada para el resultado que necesitas

Usa tuple(array) para obtener una secuencia unidimensional plana. Para un array bidimensional, usa una conversión anidada como tuple(tuple(row) for row in matrix) o su equivalente con map() si quieres que cada fila siga siendo una tupla independiente. Estas formas conservan la agrupación de los valores por filas.

Las tuplas no conservan propiedades del array de NumPy, como el atributo shape ni las operaciones de arrays. El anidamiento refleja las filas convertidas, pero no es metadato de forma de NumPy. Aplanar con un método del array es opcional si necesitas una sola secuencia con todos los valores; al hacerlo, se pierde la agrupación por filas. No hace falta aplanar para crear tuplas anidadas.

Además, convertir un array en una tupla no garantiza que todos sus elementos pasen a ser escalares nativos de Python. Los valores de NumPy pueden seguir siendo objetos escalares de NumPy. Aplica una conversión explícita, como int(), solo si el código que usará el resultado requiere ese tipo, y elige una conversión adecuada para los valores concretos. La forma en que se muestran los escalares de NumPy puede variar según la versión.