python - 捕获我在计算中得到 NaN 的那一刻

标签 python exception crash nan infinity

我正在使用线性回归运行循环,并进行计算,结果常常是无穷大。当我检查变量输出时,我注意到当我开始收到“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/

相关文章:

python - 使用 pyenv 设置全局 python 版本未按预期工作

java - 覆盖控制流/性能的 fillInStackTrace

iphone - iOS - 使用关联时出现 "This class is not key value coding-compliant"?

java - 运行 Play 项目时出现 "Error wrapping InputStream in GZIPInputStream"

debugging - Paradox (ObjectPal) 应用程序偶尔导致一般保护违规,寻找原因

python - 为什么 stat_density (R; ggplot2) 和 gaussian_kde (Python; scipy) 不同?

python - 在 Python 中以 YYYY-MM-DD 获取今天的日期?

python - 卷积网络上的二维矩阵

android - 选择图库中的图像时应用程序崩溃

crash - WatchOS 3 在收到推送通知时崩溃