ove*_*mer 29 python numpy divide-by-zero suppress-warnings
我有统计问题的功能:
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
)
Run Code Online (Sandbox Code Playgroud)
有时我会从shell获得以下警告:
RuntimeWarning: divide by zero encountered in...
Run Code Online (Sandbox Code Playgroud)
我使用numpy isinf函数来纠正其他文件中函数的结果,所以我不需要这个警告.
有没有办法忽略这条消息?换句话说,我不希望shell打印此消息.
我不想禁用所有python警告,只是这个.
ddd*_*snn 71
您可以使用禁用警告numpy.seterr.将此除以零之前的可能除法:
np.seterr(divide='ignore')
Run Code Online (Sandbox Code Playgroud)
这将全局禁用零分区警告.如果您只是想稍微禁用它们,可以numpy.errstate在with子句中使用:
with np.errstate(divide='ignore'):
# some code here
Run Code Online (Sandbox Code Playgroud)
对于零除零(未确定,导致NaN),错误行为随numpy版本1.12.0而改变:现在认为这是"无效",而之前它是"除".
因此,如果您的分子有可能也为零,请使用
np.seterr(divide='ignore', invalid='ignore')
Run Code Online (Sandbox Code Playgroud)
要么
with np.errstate(divide='ignore', invalid='ignore'):
# some code here
Run Code Online (Sandbox Code Playgroud)
请参阅发行说明中的"兼容性"部分, "新功能"部分之前的最后一段:
比较NaN浮点数现在会引发无效的运行时警告.如果预期NaN,则可以使用np.errstate忽略警告.
| 归档时间: |
|
| 查看次数: |
21359 次 |
| 最近记录: |