scipy.special.

seterr#

scipy.special.seterr(**kwargs)#

设置处理特殊功能错误的方式。

参数:
all{‘ignore’, ‘warn’ ‘raise’}, 可选

一次性为所有类型的特殊功能错误设置处理方法。选项为:

默认情况下不更改当前行为。如果指定了其他特殊函数错误类别的行为,则先应用 all,然后再应用其他类别。

singular{‘ignore’, ‘warn’, ‘raise’}, 可选

对奇点的处理方法。

underflow{‘ignore’, ‘warn’, ‘raise’}, 可选

对下溢的处理方法。

overflow{‘ignore’, ‘warn’, ‘raise’}, 可选

对上溢的处理方法。

slow{‘ignore’, ‘warn’, ‘raise’}, 可选

对缓慢收敛的处理方法。

loss{‘ignore’, ‘warn’, ‘raise’}, 可选

对精度损失的处理方法。

no_result{‘ignore’, ‘warn’, ‘raise’}, 可选

无法找到结果的处理。

domain{‘ignore’, ‘warn’, ‘raise’}, 可选

函数无效参数的处理。

arg{‘ignore’, ‘warn’, ‘raise’}, 可选

函数无效参数的处理。

other{‘ignore’, ‘warn’, ‘raise’}, 可选

未知错误的处理。

返回值:
olderrdict

包含旧设置的字典。

另请参见

geterr

获取处理特殊函数错误的当前方式

errstate

处理特殊函数错误的上下文管理器

numpy.seterr

类似的 numpy 函数(用于处理浮点错误)

示例

>>> import scipy.special as sc
>>> from pytest import raises
>>> sc.gammaln(0)
inf
>>> olderr = sc.seterr(singular='raise')
>>> with raises(sc.SpecialFunctionError):
...     sc.gammaln(0)
...
>>> _ = sc.seterr(**olderr)

我们还可以为除了一项外的每个类别引发错误。

>>> olderr = sc.seterr(all='raise', singular='ignore')
>>> sc.gammaln(0)
inf
>>> with raises(sc.SpecialFunctionError):
...     sc.spence(-1)
...
>>> _ = sc.seterr(**olderr)