查找生成NaN的计算

时间:2011-06-02 11:24:16

标签: python debugging numpy scipy nan

我有一个中等大片(几千行)的Python / Numpy / Scipy代码,它们通过某些输入抛出NaN。我寻找并找到了一些常见的嫌疑人(log(0)之类),但在这种情况下,没有一个明显的嫌疑人似乎是罪魁祸首。

是否有一种相对无痛的方式(即,除了在每个潜在的罪魁祸首周围设置异常处理代码之外),找出这些NaN来自何处?

2 个答案:

答案 0 :(得分:9)

我会从numpy.seterr开始。

在那里,无效操作被定义为“结果不是可表达的数字,通常表示产生了NaN”。默认情况下,这似乎设置为“忽略”。

答案 1 :(得分:3)

您可以使用numpy.seterr为所有numpy例程全局设置浮点错误处理行为。这应该让你可以确定它们在代码中的位置(或者至少在numpy第一次看到它们的地方)。