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)