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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *