numpy.errstate#

class numpy.errstate(**kwargs)[源代码]#

Context manager for floating-point error handling.

Using an instance of errstate as a context manager allows statements in that context to execute with a known error handling behavior. Upon entering the context the error handling is set with seterr and seterrcall, and upon exiting it is reset to what it was before.

在 1.17.0 版本发生变更: errstate is also usable as a function decorator, saving a level of indentation if an entire function is wrapped.

在 2.0 版本发生变更: errstate is now fully thread and asyncio safe, but may not be entered more than once. It is not safe to decorate async functions using errstate.

Parameters:
kwargs{divide, over, under, invalid}

Keyword arguments. The valid keywords are the possible floating-point exceptions. Each keyword should have a string value that defines the treatment for the particular error. Possible values are {‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}.

Methods

__call__(func)

Call self as a function.

Notes

For complete documentation of the types of floating-point exceptions and treatment options, see seterr.

Concurrency note: see Floating point error handling

Examples

>>> import numpy as np
>>> olderr = np.seterr(all='ignore')  # Set error handling to known state.
>>> np.arange(3) / 0.
array([nan, inf, inf])
>>> with np.errstate(divide='ignore'):
...     np.arange(3) / 0.
array([nan, inf, inf])
>>> np.sqrt(-1)
np.float64(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

Outside the context the error handling behavior has not changed:

>>> np.geterr()
{'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'}
>>> olderr = np.seterr(**olderr)  # restore original state