Как исправить: RuntimeWarning
Одно предупреждение, с которым вы можете столкнуться в Python:
Когда вы сталкиваетесь с этим предупреждением, у вас есть два варианта:
-
Не обращайте внимания.
-
Полностью отключите предупреждение.
В следующем примере показано, как устранить это предупреждение на практике.
Как воспроизвести предупреждение
Предположим, мы выполняем следующий расчет в 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.
Примечание. Как правило, предупреждения могут быть полезны для определения фрагментов кода, выполнение которых занимает много времени, поэтому будьте очень избирательны при принятии решения об отключении предупреждений.