Solucione el error de tipo Unhashable numpy.ndarray en Python

Vaibhav Vaibhav 14 abril 2022
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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python Error