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.])
ただし、コードの奥深くで2つのnp.float64
ndarray
オブジェクトを減算すると、浮動小数点の例外が発生します。例外の原因となる配列には、かなり巨大で小さな数値(1e307や1e-307など)といくつかnan
のsが含まれていますが、これらの数値を組み合わせて自分で例外テストを行うことはしていません。
さらに厄介なことに、numpy、matplotlib、python、scipyの多くのバージョンでまったく同じコードを実行するJenkinsテストの大きなグリッドがあり、これらのどれもこの例外を発生させません。私はこの時点で迷子になっています-バグがあるかどうか、またはバグがある場合は、それを追跡する方法がわかりません。
病的に興味がある場合は、問題のコードはpyspeckitであり、テストはの20行目で失敗していtest_hr2421.py
ます。
編集:フォローアップ-この小さなスニペット:np.seterr(invalid='raise')
インポートしていたモジュール、具体的にはpymcで呼び出されていたため、プルリクエストによってこの変更が行われなくなったと思います。