我有一个中等大片(几千行)的Python / Numpy / Scipy代码,它们通过某些输入抛出NaN。我寻找并找到了一些常见的嫌疑人(log(0)
之类),但在这种情况下,没有一个明显的嫌疑人似乎是罪魁祸首。
是否有一种相对无痛的方式(即,除了在每个潜在的罪魁祸首周围设置异常处理代码之外),找出这些NaN来自何处?
答案 0 :(得分:9)
我会从numpy.seterr
开始。
在那里,无效操作被定义为“结果不是可表达的数字,通常表示产生了NaN”。默认情况下,这似乎设置为“忽略”。
答案 1 :(得分:3)
您可以使用numpy.seterr
为所有numpy例程全局设置浮点错误处理行为。这应该让你可以确定它们在代码中的位置(或者至少在numpy第一次看到它们的地方)。