numpy.seterr #
- 麻木的。seterr ( all = None , diverge = None , over = None , under = None , invalid = None ) [来源] #
设置如何处理浮点错误。
请注意,整数标量类型(例如
int16
)上的操作像浮点一样处理,并受这些设置的影响。- 参数:
- all {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, 可选
立即设置对所有类型的浮点错误的处理:
ignore:异常发生时不采取任何操作。
warn:打印RuntimeWarning(通过 Python
warnings
模块)。raise:引发FloatingPointError。
call:调用使用该函数指定的函数
seterrcall
。print:直接打印警告到
stdout
.log:在 指定的 Log 对象中记录错误
seterrcall
。
默认情况下不更改当前行为。
- 除法{'ignore', 'warn', 'raise', 'call', 'print', 'log'},可选
除以零的处理。
- 超过{'ignore', 'warn', 'raise', 'call', 'print', 'log'},可选
浮点溢出的处理。
- 在{'ignore', 'warn', 'raise', 'call', 'print', 'log'}下,可选
浮点下溢的处理。
- 无效的{'ignore', 'warn', 'raise', 'call', 'print', 'log'},可选
无效浮点运算的处理。
- 返回:
- old_settings字典
包含旧设置的字典。
也可以看看
seterrcall
为“通话”模式设置回调函数。
geterr
,geterrcall
,errstate
笔记
浮点异常在 IEEE 754 标准[1]中定义:
除以零:从有限数得到无限结果。
溢出:结果太大而无法表达。
下溢:结果非常接近零,导致一些精度丢失。
无效操作:结果不是可表达的数字,通常表明产生了 NaN。
例子
>>> old_settings = np.seterr(all='ignore') #seterr to known value >>> np.seterr(over='raise') {'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'} >>> np.seterr(**old_settings) # reset to default {'divide': 'ignore', 'over': 'raise', 'under': 'ignore', 'invalid': 'ignore'}
>>> np.int16(32000) * np.int16(3) 30464 >>> 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) 30464