numpy.seterr #

麻木的。seterr ( all = None , diverge = None , over = None , under = None , invalid = None ) [来源] #

设置如何处理浮点错误。

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

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

立即设置对所有类型的浮点错误的处理:

  • ignore:异常发生时不采取任何操作。

  • warn:打印RuntimeWarning(通过 Pythonwarnings模块)。

  • 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