Résolu «Type Eerror Undelable Type» Numpy.Ndarray

Résolu «Type Eerror Undelable Type» Numpy.Ndarray
Les erreurs sont le pain et le beurre dans la vie de chaque programmeur. Vous rencontrerez des erreurs, quelle que soit la langue, l'outil ou le projet sur lesquels vous travaillez. Lorsque vous travaillez avec Python, une erreur que vous pouvez rencontrer est l'erreur «TypeError: Undelable Type». En utilisant ce guide, nous comprendrons pourquoi cette erreur se produit et ce que nous pouvons faire pour le réparer dans notre code.

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 hashable
print (hash ('Linuxhint'))

Nous 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é:

-2672783941716432156

Cependant, 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:

  1. Utilisation d'un tableau Numpy comme clé d'un dictionnaire Python.
  2. Ajout d'un tableau nu à un ensemble
  3. Conversion du tableau N dimensionnel à un ensemble.

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 NP
arr = np.Array ([1,2,3])
dict = arr: 'value'

Dans 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])
# Convertir en tuple
tup = tuple (arr)
# définir le tuple comme clé
dict = tup: 'value'
Imprimer (dict)

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])
s = set ()
s.ajouter (arr)

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])
s = set ()
Pour je à Arr:
s.Ajouter (i)
imprimer (s)

Cela devrait ajouter tous les éléments du tableau à l'ensemble.

1, 2, 3

Conversion 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]))
s = set (arr)
imprimer (s)

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!!