Come risolvere il problema: rilevato un valore non valido in true_divide
Un avviso che potresti incontrare quando usi NumPy è:
RuntimeWarning : invalid value encountered in true_divide
Questo avviso si verifica quando si tenta di dividere per un valore non valido (come NaN, Inf e così via) in un array NumPy.
Va notato che questo è solo un avviso e NumPy restituirà semplicemente un valore nan quando tenterà di dividere per un valore non valido.
L’esempio seguente mostra come rispondere concretamente a questo avviso.
Come riprodurre l’errore
Supponiamo di provare a dividere i valori di un array NumPy per i valori di un altro array NumPy:
import numpy as np #define NumPy arrays x = np. array ([4, 5, 5, 7, 0]) y = np. array ([2, 4, 6, 7, 0]) #divide the values in x by the values in y n.p. divide (x,y) array([2., 1.25, 0.8333, 1., no]) RuntimeWarning : invalid value encountered in true_divide
Si noti che NumPy divide ciascun valore di x per il valore corrispondente di y, ma viene prodotto un RuntimeWarning .
Questo perché l’ultima operazione di divisione eseguita è stata zero diviso per zero, il che ha prodotto un valore nan .
Come rispondere a questo avvertimento
Come accennato in precedenza, questo RuntimeWarning è solo un avviso e non impedisce l’esecuzione del codice.
Tuttavia, se desideri eliminare questo tipo di avviso, puoi utilizzare la seguente sintassi:
n.p. seterr (invalid=' ignore ')
Questo dice a NumPy di nascondere tutti gli avvisi che contengono un messaggio “non valido”.
Quindi, se eseguiamo nuovamente il codice, non riceveremo alcun avviso:
import numpy as np #define NumPy arrays x = np. array ([4, 5, 5, 7, 0]) y = np. array ([2, 4, 6, 7, 0]) #divide the values in x by the values in y n.p. divide (x,y) array([2., 1.25, 0.8333, 1., no])
Viene comunque restituito un valore nan per l’ultimo valore dell’output, ma questa volta non viene visualizzato alcun messaggio di avviso.
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme