Одно предупреждение, с которым вы можете столкнуться в Python:
RuntimeWarning: overflow encountered in exp
Это предупреждение появляется, когда вы используете функцию выражения NumPy , но используете слишком большое значение для ее обработки.
Важно отметить, что это просто предупреждение и что NumPy все равно выполнит запрошенный вами расчет, но по умолчанию выдает предупреждение.
Когда вы сталкиваетесь с этим предупреждением, у вас есть два варианта:
1. Не обращайте внимания.
2. Полностью отключите предупреждение.
В следующем примере показано, как устранить это предупреждение на практике.
Как воспроизвести предупреждение
Предположим, мы выполняем следующий расчет в Python:
import numpy as np
#perform some calculation
print(1/(1+np.exp (1140)))
0.0
/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:3:
RuntimeWarning: overflow encountered in exp
Обратите внимание, что NumPy выполняет вычисления (результат равен 0,0), но по-прежнему печатает RuntimeWarning .
Это предупреждение выводится, потому что значение np.exp(1140) представляет e 1140 , что является массивным числом.
В основном мы просили NumPy выполнить следующие вычисления:
- 1 / (1 + массивное число)
Это можно сократить до:
- 1 / массивное число
Фактически это 0, поэтому NumPy вычислил результат равным 0.0 .
Как подавить предупреждение
Если мы хотим, мы можем использовать пакет warnings для подавления предупреждений следующим образом:
import numpy as np
import warnings
#suppress warnings
warnings. filterwarnings('ignore')
#perform some calculation
print(1/(1+np.exp (1140)))
0.0
Обратите внимание, что NumPy выполняет вычисления и не отображает RuntimeWarning.
Примечание.Как правило, предупреждения могут быть полезны для определения фрагментов кода, выполнение которых занимает много времени, поэтому будьте очень избирательны при принятии решения об отключении предупреждений.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами