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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *