Как исправить: предупреждение во время выполнения: в double_scalar обнаружено недопустимое значение.


Ошибка, с которой вы можете столкнуться в Python:

 runtimewarning: invalid value encountered in double_scalars

Эта ошибка возникает, когда вы пытаетесь выполнить математическую операцию с чрезвычайно маленькими или чрезвычайно большими числами, а Python просто генерирует в результате значение NaN.

В следующем примере показано, как исправить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, мы пытаемся выполнить следующую математическую операцию с двумя массивами 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

Мы получаем RuntimeWarning , поскольку результат в знаменателе очень близок к нулю.

Это означает, что ответ на задачу деления будет чрезвычайно большим, и Python не сможет обработать такое большое значение.

Как исправить ошибку

Обычно способ исправить ошибку такого типа — использовать специальную функцию из другой библиотеки Python, которая может обрабатывать в вычислениях чрезвычайно малые или чрезвычайно большие значения.

В этом случае мы можем использовать функцию logsumexp() из библиотеки 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

Обратите внимание, что результат чрезвычайно велик, но мы не получаем никаких ошибок, поскольку мы использовали специальную математическую функцию из библиотеки SciPy, предназначенную для обработки чисел такого типа.

Во многих случаях стоит поискать в библиотеке SciPy специальные функции, способные обрабатывать экстремальные математические операции, поскольку эти функции специально разработаны для научных вычислений.

Примечание . Полную онлайн-документацию по функции logsumexp() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить ошибку KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *