Python hashable
Nous devons d'abord comprendre les objets hashable de Python avant de résoudre cette erreur. Dans Python, un objet hashable fait référence à un objet dont la valeur ne change pas une fois définie et peut être représentée comme une valeur de hachage unique en utilisant la fonction hash (). Bien que très relatable, le haschable ne signifie pas nécessairement que l'objet est immuable. Cela signifie que chaque objet immuable de Python est hashable, mais tous les objets hashable ne sont pas immuables.
Des exemples d'objets mutables dans Python incluent INT, Floats, STR et Tuples. D'autres types, tels que les dictionnaires, les ensembles et les listes, sont incompétentables.
Python Check Hashable
Python nous fournit la fonction hash () pour vérifier si un objet est présentable.
Par exemple:
# Vérifiez si hashableNous utilisons la fonction hash () avec un objet de chaîne dans l'extrait ci-dessus. Si l'objet fourni est présentable, la fonction doit renvoyer une valeur de hachage unique comme indiqué:
-2672783941716432156Cependant, si nous exécutons la fonction hash () avec un type incompétent, l'erreur «TypeError: Unhashable:» est générée.
Un exemple est comme indiqué dans le code ci-dessous:
print (hash ('key': 'value'))Étant donné qu'un dictionnaire Python est incompétent, le code ci-dessus doit renvoyer l'erreur comme indiqué:
TypeError: Type incompétent: «Numpy.ndarray '
Il y a trois scénarios principaux où nous pouvons obtenir cette erreur dans Numpy. Ceux-ci inclus:
Utilisation du tableau Numpy comme clé
Seuls les objets hashable peuvent être utilisés comme clés d'un dictionnaire dans Python. Puisqu'un Numpy Ndarray n'est pas hashable, toute tentative de l'utiliser comme clé d'un dictionnaire entraînera une erreur.
Ceci est illustré comme indiqué:
Importer Numpy comme NPDans cet exemple, nous essayons d'utiliser un tableau Numpy comme clé d'un dictionnaire. Il en résulte l'erreur comme indiqué ci-dessous:
Nous pouvons convertir le type de données en un objet hashable pour résoudre ce problème. Dans notre cas, la conversion du tableau en un ensemble est plus logique.
arr = np.Array ([1,2,3])Nous convertissons le NDARRAY en un tuple et l'avons attribué comme la clé.
Ajoutant un tableau Numpy à un ensemble
Tenter d'ajouter un ndarray à un ensemble entraînera également cette erreur. Un exemple est comme indiqué:
arr = np.Array ([1,2,3])Nous essayons d'ajouter un ndarray à un ensemble dans ce cas. Par conséquent, le code ci-dessus doit renvoyer une erreur:
Nous pouvons résoudre ceci en ajoutant chaque élément de tableau au lieu de l'objet de tableau dans l'ensemble.
arr = np.Array ([1,2,3])Cela devrait ajouter tous les éléments du tableau à l'ensemble.
1, 2, 3Conversion de la dimension N en réglage
Un autre cas où cette erreur peut se produire est de convertir un tableau de dimension N en un ensemble.
Exemple:
arr = np.Array ([[1,2,3], [4,5,6]))Le code ci-dessus convertit un tableau 2D en un ensemble. De même, le code ci-dessus entraînera une erreur comme indiqué:
Vous pouvez résoudre cette erreur en accédant aux éléments du tableau individuellement.
Résolu
Cet article a couvert le «TypeError: Type incompétent:» Erreur dans Python, pourquoi elle se produit, et comment le réparer dans notre code Numpy.
Rendez-vous au prochain!!