Um erro que pode encontrar em Python é:
runtimewarning: valor inválido encontrado em double_scalars
Este erro ocorre quando tenta efetuar alguma operação matemática que envolva números extremamente pequenos ou extremamente grandes e o Python simplesmente apresenta um valor NaN como resultado.
O exemplo seguinte mostra como corrigir este erro na prática.
Como reproduzir o erro
Suponha que tentamos efetuar a seguinte operação matemática com duas matrizes NumPy:
import numpy as np #define two NumPy arrays array1 = np. array ([[1100, 1050]]) array2 = np. array ([[1200, 4000]]) #perform complex mathematical operation np. exp (-3*array1). sum () / np. exp (-3*array2). sum () RuntimeWarning: invalid value encountered in double_scalars
Recebemos um Aviso de tempo de execução porque o resultado no denominador é extremamente próximo de zero.
Isto significa que a resposta ao problema de divisão será extremamente grande e Python não é capaz de lidar com um valor tão grande.
Como corrigir o erro
Normalmente, a forma de corrigir este tipo de erro é utilizar uma função especial de outra biblioteca em Python que seja capaz de lidar com valores extremamente pequenos ou extremamente grandes em cálculos.
Neste caso, podemos utilizar 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 np. exp (logsumexp(-3*array1) - logsumexp(-3*array2)) 2.7071782767869983e+195
Repare que o resultado é extremamente grande mas não recebemos qualquer erro porque utilizámos uma função matemática especial da biblioteca SciPy que foi concebida para lidar com este tipo de números.
Em muitos casos, vale a pena procurar funções especiais da biblioteca SciPy que podem lidar com operações matemáticas extremas, porque estas funções foram concebidas especificamente para a computação científica.
Nota : Pode encontrar a documentação online completa para o logsumexp() função aqui.