Come risolvere il problema: runtimewarning: rilevato valore non valido in double_scalars
Un errore che potresti riscontrare in Python è:
runtimewarning: invalid value encountered in double_scalars
Questo errore si verifica quando si tenta di eseguire un’operazione matematica che coinvolge numeri estremamente piccoli o estremamente grandi e Python genera semplicemente un valore NaN come risultato.
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di provare a eseguire la seguente operazione matematica con due array NumPy:
import numpy as np #define two NumPy arrays array1 = np. array ([[1100, 1050]]) array2 = np. array ([[1200, 4000]]) #perform complex mathematical operation n.p. exp (-3*array1). sum () / np. exp (-3*array2). sum () RuntimeWarning: invalid value encountered in double_scalars
Riceviamo un RuntimeWarning perché il risultato al denominatore è estremamente vicino allo zero.
Ciò significa che la risposta al problema della divisione sarà estremamente ampia e Python non è in grado di gestire un valore così grande.
Come correggere l’errore
In genere, il modo per correggere questo tipo di errore è utilizzare una funzione speciale di un’altra libreria Python in grado di gestire valori estremamente piccoli o estremamente grandi nei calcoli.
In questo caso possiamo utilizzare la funzione logsumexp() della libreria SciPy:
import numpy as np from scipy. special import logsumexp #define two NumPy arrays array1 = np. array ([[1100, 1050]]) array2 = np. array ([[1200, 4000]]) #perform complex mathematical operation n.p. exp (logsumexp(-3*array1) - logsumexp(-3*array2)) 2.7071782767869983e+195
Tieni presente che il risultato è estremamente grande ma non riceviamo alcun errore perché abbiamo utilizzato una speciale funzione matematica della libreria SciPy progettata per gestire questi tipi di numeri.
In molti casi vale la pena cercare funzioni speciali nella libreria SciPy in grado di gestire operazioni matematiche estreme, perché queste funzioni sono progettate specificamente per il calcolo scientifico.
Nota : puoi trovare la documentazione online completa per la funzione logsumexp() qui .
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