Python Hashable
Primero debemos entender los objetos de Hashable de Python antes de resolver este error. En Python, un objeto hashable se refiere a un objeto cuyo valor no cambia una vez definido y puede representarse como un valor hash único usando la función hash (). Aunque muy identificable, el hashable no significa necesariamente que el objeto sea inmutable. Esto significa que cada objeto inmutable en Python es de Hashable, pero no todos los objetos de Hashable son inmutables.
Ejemplos de objetos mutables en Python incluyen int, flotadores, str y tuples. Otros tipos, como diccionarios, conjuntos y listas, no se pueden hacer.
Python Check Hashable
Python nos proporciona la función hash () para verificar si un objeto es hashable.
Por ejemplo:
# Compruebe si HASHABLEUsamos la función hash () con un objeto de cadena en el fragmento anterior. Si el objeto proporcionado es hashable, la función debe devolver un valor hash único como se muestra:
-2672783941716432156Sin embargo, si ejecutamos la función hash () con un tipo de infalición, se genera el error "typeError: infalable:".
Un ejemplo es como se muestra en el siguiente código:
print (hash ('key': 'valor'))Dado que un diccionario de Python no se ha influido, el código anterior debe devolver el error como se muestra:
TypeError: Tipo de infalible: 'Numpy.ndarray '
Hay tres escenarios principales en los que podemos obtener este error en Numpy. Éstas incluyen:
Usar una matriz Numpy como clave
Solo se pueden usar objetos hashables como claves para un diccionario en Python. Dado que un ndarray numpy no es hashable, cualquier intento de usarlo como clave en un diccionario dará como resultado un error.
Esto se ilustra como se muestra:
importar numpy como npEn este ejemplo, intentamos usar una matriz numpy como clave para un diccionario. Esto da como resultado el error como se muestra a continuación:
Podemos convertir el tipo de datos en un objeto de hashable para solucionar esto. En nuestro caso, convertir la matriz en un conjunto tiene más sentido.
arr = np.Array ([1,2,3])Convertimos el ndarray a una tupla y la asignamos como la clave.
Agregar una matriz numpy a un conjunto
Intentar agregar un ndarray a un conjunto también dará como resultado este error. Un ejemplo es como se muestra:
arr = np.Array ([1,2,3])Estamos tratando de agregar un ndarray a un set en este caso. Por lo tanto, el código anterior debe devolver un error:
Podemos resolver esto agregando cada elemento de matriz en lugar del objeto de matriz en el conjunto.
arr = np.Array ([1,2,3])Esto debería agregar todos los elementos de la matriz al conjunto.
1, 2, 3Conversión de n-dimensión para establecer
Otra instancia en la que puede ocurrir este error es convertir una matriz N-Dimension a un conjunto.
Ejemplo:
arr = np.Array ([[1,2,3], [4,5,6]])El código anterior convierte una matriz 2D en un conjunto. Del mismo modo, el código anterior dará como resultado un error como se muestra:
Puede resolver este error accediendo a los elementos de la matriz individualmente.
Resuelto
Este artículo cubrió el error "TypeError: Unfashable:" Error en Python, por qué ocurre y cómo solucionarlo en nuestro código Numpy.
Nos vemos en el siguiente!!