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.