numpy.
seterr
设置如何处理浮点错误。
注意整型标量类型上的操作(例如 int16 )像浮点一样处理,并受这些设置的影响。
int16
一次为所有类型的浮点错误设置处理:
忽略:发生异常时不执行任何操作。
警告:打印 RuntimeWarning (通过Python) warnings 模块)。
warnings
提高:提高 FloatingPointError .
调用:调用使用 seterrcall 功能。
seterrcall
打印:将警告直接打印到 stdout .
stdout
日志:在由指定的日志对象中记录错误 seterrcall .
默认设置是不更改当前行为。
除数为零的处理。
浮点溢出处理。
浮点下溢处理。
无效浮点运算的处理。
包含旧设置的词典。
参见
为“调用”模式设置回调函数。
geterr
geterrcall
errstate
笔记
浮点异常在IEEE754标准中定义。 [1]:
除以零:从有限数中得到的无限结果。
溢出:结果太大,无法表示。
下溢:结果如此接近零,以至于失去了一些精度。
无效操作:结果不是可表示的数字,通常表示生成了NaN。
https://en.wikipedia.org/wiki/IEEE_754
实例
>>> 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 short_scalars
>>> from collections import OrderedDict >>> old_settings = np.seterr(all='print') >>> OrderedDict(np.geterr()) OrderedDict([('divide', 'print'), ('over', 'print'), ('under', 'print'), ('invalid', 'print')]) >>> np.int16(32000) * np.int16(3) 30464