上一主题

numpy.geterrcall

下一主题

numpy.seterrobj

numpy.errstate

class numpy.errstate(**kwargs)[source]

浮点错误处理的上下文管理器。

使用errstate的实例作为上下文管理器允许在该上下文中的语句以已知的错误处理行为执行。在进入上下文时,错误处理用seterrseterrcall设置,并且在退出时将其重置为之前的状态。

参数:

kwargs:{divide,over,under,invalid}

关键字参数。有效的关键字是可能的浮点异常。每个关键字都应该有一个字符串值来定义特定错误的处理。可能的值为{'ignore','warn','raise','call','print','log'}。

也可以看看

seterrgeterrseterrcallgeterrcall

笔记

with语句在Python 2.5中引入,只能通过导入使用: __ future __ import with_statement在早期的Python版本中,with语句不可用。

有关浮点异常和处理选项类型的完整文档,请参见seterr

例子

>>> from __future__ import with_statement  # use 'with' in Python 2.5
>>> olderr = np.seterr(all='ignore')  # Set error handling to known state.
>>> np.arange(3) / 0.
array([ NaN,  Inf,  Inf])
>>> with np.errstate(divide='warn'):
...     np.arange(3) / 0.
...
__main__:2: RuntimeWarning: divide by zero encountered in divide
array([ NaN,  Inf,  Inf])
>>> np.sqrt(-1)
nan
>>> with np.errstate(invalid='raise'):
...     np.sqrt(-1)
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
FloatingPointError: invalid value encountered in sqrt

在上下文之外,错误处理行为未更改:

>>> np.geterr()
{'over': 'warn', 'divide': 'warn', 'invalid': 'warn',
'under': 'ignore'}