numpy.seterr¶
-
numpy.
seterr
(all=None, divide=None, over=None, under=None, invalid=None)[source]¶ 设置如何处理浮点错误。
请注意,对整数标量类型(例如
int16
)的操作将像浮点一样处理,并受这些设置的影响。参数: all:{'ignore','warn','raise','call','print','log'}
一次为所有类型的浮点错误设置处理:
- ignore:在发生异常时不采取任何操作。
- warn:打印RuntimeWarning(通过Python
warnings
模块)。 - raise:提高FloatingPointError。
- call:使用
seterrcall
函数调用指定的函数。 - print:直接向
stdout
打印警告。 - log:在由
seterrcall
指定的Log对象中记录错误。
默认不是改变当前行为。
divide:{'ignore','warn','raise','call','print','log'}
除以零的处理。
over:{'ignore','warn','raise','call','print','log'}
浮点溢出的处理。
在下:{'ignore','warn','raise','call','print','log'}
浮点下溢的处理。
无效:{'ignore','warn','raise','call','print','log'}
无效浮点运算的处理。
返回: old_settings:dict
包含旧设置的字典。
笔记
浮点异常在IEEE 754标准[1]中定义:
- 除以零:从有限数字获得的无限结果。
- 溢出:结果太大,无法表达。
- 下溢:结果接近零,一些精度丢失。
- 操作无效:结果不是可表达的数字,通常表示生成了NaN。
[R281] http://en.wikipedia.org/wiki/IEEE_754 例子
>>> old_settings = np.seterr(all='ignore') #seterr to known value >>> np.seterr(over='raise') {'over': 'ignore', 'divide': 'ignore', 'invalid': 'ignore', 'under': 'ignore'} >>> np.seterr(**old_settings) # reset to default {'over': 'raise', 'divide': 'ignore', 'invalid': 'ignore', 'under': '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 short_scalars
>>> old_settings = np.seterr(all='print') >>> np.geterr() {'over': 'print', 'divide': 'print', 'invalid': 'print', 'under': 'print'} >>> np.int16(32000) * np.int16(3) Warning: overflow encountered in short_scalars 30464