統計の問題のための機能があります:
import numpy as np
from scipy.special import gamma as Gamma
def Foo(xdata):
...
return x1 * (
( #R is a numpy vector
( ((R - x2)/beta) ** (x3 -1) ) *
( np.exp( - ((R - x2) / x4) ) ) /
( x4 * Gamma(x3))
).real
)
シェルから次の警告が表示されることがあります。
RuntimeWarning: divide by zero encountered in...
Numpy isinf
関数を使用して他のファイルの関数の結果を修正するため、この警告は必要ありません。
メッセージを無視する方法はありますか?つまり、シェルにこのメッセージを出力させたくないのです。
すべてのpython警告、これだけを無効にしたくありません。
警告を無効にするには numpy.seterr
。ゼロ除算の前にこれを置きます:
np.seterr(divide='ignore')
これにより、ゼロ除算の警告がグローバルに無効になります。少し無効にしたいだけなら、 numpy.errstate
with
句内:
with np.errstate(divide='ignore'):
# some code here
ゼロによるゼロ除算(未決定、NaNの結果)の場合、エラーの動作はnumpyバージョン1.12.0で変更されました。これは、以前は「除算」であったのに対し、「無効」と見なされるようになりました。
したがって、分子がゼロになる可能性がある場合は、
np.seterr(divide='ignore', invalid='ignore')
または
with np.errstate(divide='ignore', invalid='ignore'):
# some code here
リリースノート 、「新機能」セクションの前の最後の段落の「互換性」セクションを参照してください。
NaN浮動小数点数を比較すると、無効なランタイム警告が発生するようになりました。 NaNが予想される場合、np.errstateを使用して警告を無視できます。
除算にはnumpy.divide
を使用することもできます。そうすれば、警告を明示的に無効にする必要はありません。
In [725]: np.divide(2, 0)
Out[725]: 0