scipy.special.
seterr#
- scipy.special.seterr(**kwargs)#
设置如何处理特殊功能错误。
- 参数:
- 全部{‘ignore’, ‘warn’ ‘raise’}, 可选
一次性设置所有类型的特殊功能错误的处理方式。选项有:
‘忽略’ 当错误发生时不采取任何行动
‘warn’ 在错误发生时打印一个
SpecialFunctionWarning
(通过 Python 的warnings
模块)‘raise’ 当错误发生时引发
SpecialFunctionError
。
默认情况下,不会改变当前的行为。如果为特殊功能错误的其他类别指定了行为,那么首先应用
all
,然后是其他类别。- 单数{‘忽略’, ‘警告’, ‘引发’}, 可选
奇点的处理。
- 下溢{‘忽略’, ‘警告’, ‘引发’}, 可选
处理下溢。
- 溢出{‘忽略’, ‘警告’, ‘引发’}, 可选
溢出处理。
- 慢{‘忽略’, ‘警告’, ‘引发’}, 可选
处理缓慢收敛问题。
- 损失{‘忽略’, ‘警告’, ‘引发’}, 可选
精度损失的处理。
- 无结果{‘忽略’, ‘警告’, ‘引发’}, 可选
处理未找到结果的情况。
- 领域{‘忽略’, ‘警告’, ‘引发’}, 可选
处理函数中无效参数的情况。
- 参数{‘忽略’, ‘警告’, ‘引发’}, 可选
处理函数中无效的参数。
- 其他{‘忽略’, ‘警告’, ‘引发’}, 可选
处理未知错误。
- 返回:
- 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)