numpy.seterr#
- numpy.seterr(all=None, divide=None, over=None, under=None, invalid=None)[源代码]#
设置如何处理浮点错误.
请注意,对整数标量类型(如
int16
)的操作像浮点数一样处理,并且受这些设置的影响.- 参数:
- all{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 可选
一次性设置所有类型的浮点错误处理:
ignore: 当异常发生时不采取任何行动.
warn: 打印一个
RuntimeWarning
(通过 Python 的warnings
模块).raise: 引发一个
浮点错误
.call: 使用
seterrcall
函数指定的函数.print: 直接将警告打印到
stdout
.log: 在由
seterrcall
指定的 Log 对象中记录错误.
默认情况下不会改变当前的行为.
- divide{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 可选
处理除以零的情况.
- over{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 可选
浮点数溢出的处理.
- under{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 可选
浮点下溢的处理.
- invalid{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 可选
无效浮点操作的处理.
- 返回:
- old_settingsdict
包含旧设置的字典.
参见
seterrcall
为 ‘call’ 模式设置一个回调函数.
geterr
,geterrcall
,errstate
备注
浮点异常在 IEEE 754 标准中定义 [1]
除以零:从有限数中得到无限结果.
溢出:结果太大,无法表示.
下溢:结果非常接近于零,以至于丢失了一些精度.
无效操作:结果不是一个可表达的数字,通常表示产生了NaN.
示例
>>> import numpy as np >>> orig_settings = np.seterr(all='ignore') # seterr to known value >>> np.int16(32000) * np.int16(3) np.int16(30464) >>> np.seterr(over='raise') {'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'} >>> old_settings = np.seterr(all='warn', over='raise') >>> np.int16(32000) * np.int16(3) Traceback (most recent call last): File "<stdin>", line 1, in <module> FloatingPointError: overflow encountered in scalar multiply
>>> old_settings = np.seterr(all='print') >>> np.geterr() {'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'} >>> np.int16(32000) * np.int16(3) np.int16(30464) >>> np.seterr(**orig_settings) # restore original {'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}