我正在运行带有线性回归的循环,并在我经常以无穷大结束的地方进行计算。当我检查变量输出时,我注意到当我开始获得“NaN”时事情会崩溃。我尝试了很多不同的方法来处理无穷大,但我的程序仍然以崩溃告终。我已经做了一些事情,比如用非常大或非常小的值替换 NaN,但现在我认为这没有用。我不应该一视同仁地对待所有的 NaN - 显然有些 NaN 在玩正无穷大时出现,而有些则用负无穷大。
我真的需要知道我的代码究竟是在哪个点突然产生 NaN,以及产生它的是负无穷大还是正无穷大。在程序崩溃之前,我该怎么做?
编辑
我知道如何检查 NaN。我可以简单地使用 numpy.isnan
,而且我已经使用过它。但我想知道它什么时候发生。是不是有异常或者什么可以在发生时调用或抛出警告的东西?
最佳答案
如果您想使用 numpy 捕获数字异常,最好的选择可能是使用 numpy.seterr
:
例如,要引发无效操作的异常(导致 NaN):
import numpy as np
np.seterr(invalid='raise')
np.float64(0)/0.
在控制台上生成该显示:
Traceback (most recent call last):
File "h.py", line 4, in <module>
np.float64(0)/0.
FloatingPointError: invalid value encountered in double_scalars
关于python - 捕获我在计算中得到 NaN 的那一刻,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25505489/