Solucione el error de tipo Unhashable numpy.ndarray en Python
El diccionario de Python es una estructura de datos robusta y escalable que almacena datos en forma de pares clave-valor. En pares clave-valor, la clave única apunta a algún valor y no hay limitaciones en cuanto a cuál es el valor. Un valor puede ser un entero, un número de punto flotante, un valor booleano, una lista de números, un objeto de clase, una lista de objetos de clase, una tupla, un diccionario y muchos más. Mientras que existen algunas limitaciones sobre lo que puede ser una clave.
La condición esencial para una clave es que debe ser un objeto hashable. Un objeto hashable se refiere a un objeto que, una vez definido, no se puede modificar más durante su vida útil o es inmutable y se puede representar con un valor hash único. Un valor hash es un valor entero único.
Los tipos de datos como int
, float
, str
, tuple
y los objetos de clase son objetos inmutables. Significa que se pueden utilizar de forma segura como claves en los diccionarios. Los problemas surgen cuando no somos particulares sobre el tipo de datos de las claves. Por ejemplo, si tratamos de usar una lista
o un numpy.ndarray
como clave, nos encontraremos con TypeError: unhashable type: 'list'
y TypeError: unhashable type: 'numpy.ndarray'
errores respectivamente.
En este artículo, aprenderemos cómo evitar este error para las matrices NumPy.
Solucione el error unhashable type numpy.ndarray
en Python
Tenemos que convertir un array NumPy en un tipo de datos que se pueda usar de manera segura como clave para corregir este error. Y, en el caso de matrices y listas, una tupla
es el camino a seguir. Consulte el siguiente código de Python para lo mismo.
import numpy as np
dictionary = {}
n = np.array([1.234, 21.33, 3.413, 4.4, 15.0000])
n = tuple(n) # Conversion
dictionary[n] = "Hello World"
print(dictionary)
Producción :
{(1.234, 21.33, 3.413, 4.4, 15.0): 'Hello World'}
El método tuple()
incorporado de Python realizará la conversión necesaria para el objeto iterable.
Artículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python