numpy.seterr

numpy.seterr(all=None, divide=None, over=None, under=None, invalid=None)[源代码]

设置如何处理浮点错误。

注意整型标量类型上的操作(例如 int16 )像浮点一样处理,并受这些设置的影响。

参数
all'ignore'、'warn'、'raise'、'call'、'print'、'log',可选

一次为所有类型的浮点错误设置处理:

  • 忽略:发生异常时不执行任何操作。

  • 警告:打印 RuntimeWarning (通过Python) warnings 模块)。

  • 提高:提高 FloatingPointError .

  • 调用:调用使用 seterrcall 功能。

  • 打印:将警告直接打印到 stdout .

  • 日志:在由指定的日志对象中记录错误 seterrcall .

默认设置是不更改当前行为。

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_settings双关语

包含旧设置的词典。

参见

seterrcall

为“调用”模式设置回调函数。

geterr, geterrcall, errstate

笔记

浮点异常在IEEE754标准中定义。 [1]:

  • 除以零:从有限数中得到的无限结果。

  • 溢出:结果太大,无法表示。

  • 下溢:结果如此接近零,以至于失去了一些精度。

  • 无效操作:结果不是可表示的数字,通常表示生成了NaN。

1

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