Como corrigir: runtimewarning: valor inválido encontrado em double_scalars
Um erro que você pode encontrar em Python é:
runtimewarning: invalid value encountered in double_scalars
Este erro ocorre quando você tenta realizar uma operação matemática envolvendo números extremamente pequenos ou extremamente grandes e o Python simplesmente gera um valor NaN como resultado.
O exemplo a seguir mostra como corrigir esse erro na prática.
Como reproduzir o erro
Suponha que tentemos realizar a seguinte operação matemática com dois arrays 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
Recebemos um RuntimeWarning porque o resultado no denominador é extremamente próximo de zero.
Isso significa que a resposta ao problema da divisão será extremamente grande e o Python será incapaz de lidar com um valor tão grande.
Como corrigir o erro
Normalmente, a maneira de corrigir esse tipo de erro é usar uma função especial de outra biblioteca Python que pode lidar com valores extremamente pequenos ou extremamente grandes em cálculos.
Neste caso, podemos usar a função logsumexp() da biblioteca 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
Observe que o resultado é extremamente grande, mas não recebemos nenhum erro porque usamos uma função matemática especial da biblioteca SciPy projetada para lidar com esses tipos de números.
Em muitos casos, vale a pena procurar funções especiais na biblioteca SciPy que possam lidar com operações matemáticas extremas, porque essas funções são projetadas especificamente para computação científica.
Nota : Você pode encontrar a documentação online completa para a função logsumexp() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas