我FloatingPointError: invalid value encountered in subtract
在一段测试代码中遇到。在代码本身没有进行任何更改的情况下开始引发异常,因此我在理解它时遇到了很多麻烦。
我的问题:是什么导致了invalid value encountered in subtract
异常?为什么它在不同的 python+numpy 安装上会有不同的表现?
细节:
此 MWE不会引发FloatingPointError
:
>>> import numpy as np
>>> np.__version__
'1.6.1'
>>> x = np.arange(5,dtype='float64')
>>> y = np.ones(5,dtype='float64')
>>> x[2]=np.nan
>>> x-y
# array([ -1., 0., nan, 2., 3.])
然而,在一段代码的深处,我减去了两个np.float64
ndarray
对象,得到了一个浮点异常。导致异常的数组包含一些非常庞大和微小的数字(例如,1e307 和 1e-307)和一些nan
s,但我没有对这些数字进行任何组合导致我自己进行异常测试。
更令人不安的是,我有大量的 Jenkins 测试运行与许多版本的 numpy、matplotlib、python 和 scipy 完全相同的代码,但没有一个会引发此异常。我在这一点上迷路了 - 我不知道是否有错误,或者如果有,如何追踪它。
如果您非常好奇,有问题的代码是pyspeckit并且测试在test_hr2421.py
.
编辑:跟进 - 我认为这个小片段:np.seterr(invalid='raise')
在我正在导入的模块中被调用,特别是 pymc,并且拉取请求已经阻止了这个更改。