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

Aggiungi un commento

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