Python Hashable
Per prima cosa dobbiamo capire gli oggetti hashable di Python prima di risolvere questo errore. In Python, un oggetto hashable si riferisce a un oggetto il cui valore non cambia una volta definito e può essere rappresentato come un valore di hash univoco usando la funzione hash (). Sebbene molto riconoscibile, Hashable non significa necessariamente che l'oggetto sia immutabile. Ciò significa che ogni oggetto immutabile in Python è hashable, ma non tutti gli oggetti hashable sono immutabili.
Esempi di oggetti mutabili in Python includono int, galleggianti, str e tuple. Altri tipi, come dizionari, set ed elenchi, sono danneggiabili.
Python Check hashable
Python ci fornisce la funzione hash () per verificare se un oggetto è hashable.
Per esempio:
# Controlla se hashableUsiamo la funzione hash () con un oggetto stringa nello snippet sopra. Se l'oggetto fornito è hashable, la funzione dovrebbe restituire un valore di hash unico come mostrato:
-2672783941716432156Tuttavia, se eseguiamo la funzione Hash () con un tipo non povero, l'errore "TAYEERROR: non insalabile:" viene generato l'errore.
Un esempio è come mostrato nel codice seguente:
print (hash ('key': 'value')Poiché un dizionario di Python non è inasbabile, il codice sopra dovrebbe restituire l'errore come mostrato:
TAYEERROR: Tipo non povero: 'Numpy.ndarray '
Ci sono tre scenari principali in cui possiamo ottenere questo errore in numpy. Questi includono:
Usando l'array numpy come chiave
Solo gli oggetti hashable possono essere usati come chiavi di un dizionario in Python. Poiché un Numpy Ndarray non è hashable, qualsiasi tentativo di usarlo come chiave in un dizionario comporterà un errore.
Questo è illustrato come mostrato:
Importa Numpy come NPIn questo esempio, cerchiamo di usare un array numpy come chiave per un dizionario. Ciò si traduce nell'errore come mostrato di seguito:
Possiamo convertire il tipo di dati in un oggetto hashable per correggere questo. Nel nostro caso, convertire l'array in un set ha più senso.
arr = np.Array ([1,2,3])Convertiamo il ndarray in una tupla e lo assegniamo come chiave.
Aggiunta di un array numpy a un set
Il tentativo di aggiungere un NdArray a un set comporterà anche questo errore. Un esempio è come mostrato:
arr = np.Array ([1,2,3])Stiamo tentando di aggiungere un ndarray a un set in questo caso. Pertanto, il codice sopra dovrebbe restituire un errore:
Possiamo risolverlo aggiungendo ogni elemento array anziché l'oggetto array nel set.
arr = np.Array ([1,2,3])Questo dovrebbe aggiungere tutti gli elementi dell'array al set.
1, 2, 3Conversione di dimensione n su set
Un'altra istanza in cui può verificarsi questo errore è la conversione di un array N-dimensione in un set.
Esempio:
arr = np.Array ([[1,2,3], [4,5,6]])Il codice sopra converte un array 2D in un set. Allo stesso modo, il codice sopra si tradurrà in un errore come mostrato:
È possibile risolvere questo errore accedendo singolarmente agli elementi dell'array.
Risolto
Questo articolo ha coperto il tipo "TypeEerror: non insalabile:" Errore in Python, perché si verifica e come risolverlo nel nostro codice numpy.
Ci vediamo alla prossima!!