当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy seterr用法及代码示例


本文简要介绍 python 语言中 numpy.seterr 的用法。

用法:

numpy.seterr(all=None, divide=None, over=None, under=None, invalid=None)

设置如何处理浮点错误。

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

参数

all {‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’},可选

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

  • ignore:发生异常时不采取任何措施。

  • 警告:打印一个RuntimeWarning(通过 Pythonwarnings模块)。

  • raise:提高一个FloatingPointError.

  • call:调用使用 seterrcall 函数指定的函数。

  • print:直接向 stdout 打印警告。

  • log:在 seterrcall 指定的 Log 对象中记录错误。

默认是不改变当前行为。

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 dict

包含旧设置的字典。

注意

浮点异常在 IEEE 754 标准 [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
>>> old_settings = np.seterr(all='print')
>>> np.geterr()
{'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}
>>> np.int16(32000) * np.int16(3)
30464

相关用法


注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.seterr。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。