Beheben den Fehler Unhashable Type numpy.ndarray in Python
Das Python-Dictionary ist eine robuste und skalierbare Datenstruktur, die Daten in Form von Schlüssel-Wert-Paaren speichert. In Schlüssel-Wert-Paaren weist ein eindeutiger Schlüssel auf einen Wert hin, und es gibt keine Einschränkungen hinsichtlich des Werts. Ein Wert kann eine Ganzzahl, eine Fließkommazahl, ein boolescher Wert, eine Liste von Zahlen, ein Klassenobjekt, eine Liste von Klassenobjekten, ein Tupel, ein Dictionary und vieles mehr sein. Während es einige Einschränkungen gibt, was ein Schlüssel sein kann.
Die wesentliche Bedingung für einen Schlüssel ist, dass es sich um ein hashfähiges Objekt handelt. Ein hashfähiges Objekt bezieht sich auf ein Objekt, das einmal definiert wurde, während seiner Lebensdauer nicht weiter modifiziert werden kann oder unveränderlich ist und mit einem eindeutigen Hashwert dargestellt werden kann. Ein Hash-Wert ist ein eindeutiger ganzzahliger Wert.
Datentypen wie int
, float
, str
, tuple
und Klassenobjekte sind unveränderliche Objekte. Das bedeutet, dass sie sicher als Schlüssel in Wörterbüchern verwendet werden können. Probleme treten auf, wenn wir den Datentyp von Schlüsseln nicht genau kennen. Wenn wir beispielsweise versuchen, eine Liste
oder ein numpy.ndarray
als Schlüssel zu verwenden, werden wir auf TypeError: unhashable type: 'list'
und TypeError: unhashable type: 'numpy.ndarray'
stoßen. Fehler bzw.
In diesem Artikel erfahren wir, wie Sie diesen Fehler für NumPy-Arrays vermeiden können.
Beheben den Fehler unhashable type numpy.ndarray
in Python
Wir müssen ein NumPy-Array in einen Datentyp konvertieren, der sicher als Schlüssel zur Behebung dieses Fehlers verwendet werden kann. Und im Fall von Arrays und Listen ist ein Tupel der richtige Weg. Siehe dazu den folgenden Python-Code.
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)
Ausgabe:
{(1.234, 21.33, 3.413, 4.4, 15.0): 'Hello World'}
Die in Python eingebaute tuple()
-Methode führt die notwendige Konvertierung für das iterierbare Objekt durch.
Verwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung