如何修复:运行时警告:exp 中遇到溢出
您在 Python 中可能遇到的警告是:
RuntimeWarning: overflow encountered in exp
当您使用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 。
如何去除警告
如果需要,我们可以使用warns包来抑制警告,如下所示:
import numpy as np import warnings #remove warnings warnings. filterwarnings (' ignore ') #perform some calculation print (1/(1+np. exp (1140))) 0.0
请注意,NumPy 执行计算并且不显示运行时警告。
注意:一般来说,警告有助于识别需要很长时间执行的代码片段。因此,在决定删除警告时要非常有选择性。
其他资源
以下教程解释了如何修复 Python 中的其他常见错误:
如何修复 Pandas 中的 KeyError
如何修复:ValueError:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播