Python Hashable
Najpierw musimy zrozumieć obiekty Hashable Pythona przed rozwiązaniem tego błędu. W Pythonie obiekt skrótowy odnosi się do obiektu, którego wartość nie zmienia się po zdefiniowaniu i może być reprezentowana jako unikalna wartość skrótu przy użyciu funkcji HOSH (. Choć bardzo powiązane, Hashable niekoniecznie oznacza, że obiekt jest niezmienny. Oznacza to, że każdy niezmienny obiekt w Pythonie jest haszalny, ale nie wszystkie obiekty haszalne są niezmienne.
Przykłady zmiennych obiektów w Pythonie obejmują int, pływaki, str i krotki. Inne typy, takie jak słowniki, zestawy i listy, są nie do zabezpieczenia.
Python Check Hashable
Python zapewnia nam funkcję HASH (), aby sprawdzić, czy obiekt jest haszalny.
Na przykład:
# Sprawdź, czy HashableUżywamy funkcji HASH () z obiektem ciągów w powyższym fragmencie. Jeśli dostarczony obiekt jest haszalny, funkcja powinna zwrócić unikalną wartość skrótu, jak pokazano:
-2672783941716432156Jeśli jednak uruchomimy funkcję HASH () z typem bez zaprzestania, błąd „TypeError: Bezpchakowany typ:”.
Przykładem jest to, jak pokazano w poniższym kodzie:
print (hash ('key': 'value')))Ponieważ słownik Pythona jest nie do zaprzestania, powyższy kod powinien zwrócić błąd, jak pokazano:
TypeError: Typ nieskrępowany: „Numpy.ndarray '
Istnieją trzy główne scenariusze, w których możemy uzyskać ten błąd w Numpy. Obejmują one:
Klucz jako klucz Numpy Array
Tylko obiekty Hashable mogą być używane jako klucze do słownika w Pythonie. Ponieważ Numpy Ndarray nie jest haszalny, każda próba użycia go jako klucza w słowniku spowoduje błąd.
Jest to zilustrowane jak pokazano:
importować Numpy jako NPW tym przykładzie próbujemy użyć tablicy Numpy jako klucza do słownika. Powoduje to błąd, jak pokazano poniżej:
Możemy przekonwertować typ danych na obiekt Hashable, aby to naprawić. W naszym przypadku przekształcenie tablicy w zestaw ma większy sens.
ARR = NP.tablica ([1,2,3])Konwertujemy ndarray na krotek i przypisujemy go jako klucz.
Dodanie tablicy Numpy do zestawu
Próba dodania ndarray do zestawu spowoduje również ten błąd. Przykładem jest jak pokazano:
ARR = NP.tablica ([1,2,3])W tym przypadku staramy się dodać ndarray do zestawu. Dlatego powyższy kod powinien zwrócić błąd:
Możemy to rozwiązać, dodając każdy element tablicy zamiast obiektu tablicy do zestawu.
ARR = NP.tablica ([1,2,3])To powinno dodać wszystkie elementy tablicy do zestawu.
1, 2, 3Konwersja N-Dimension na zestaw
Kolejnym przypadkiem, w którym może wystąpić ten błąd, jest przekształcenie tablicy N-wymiaru w zestaw.
Przykład:
ARR = NP.tablica ([[1,2,3], [4,5,6]])Kod powyżej przekształca tablicę 2D w zestaw. Podobnie powyższy kod spowoduje błąd, jak pokazano:
Możesz rozwiązać ten błąd, uzyskując dostęp do elementów tablicy indywidualnie.
Rozwiązany
W tym artykule obejmował „Typeerror: nielaski typ:” Błąd w Pythonie, dlaczego się pojawia i jak to naprawić w naszym kodzie Numpy.
Do zobaczenia na następnym!!