Error handling settings are stored in
allowing different threads or async tasks to have independent configurations. For more information, see
.
How numpy handles numerical exceptions
The default is to 'warn' for invalid, divide, and overflow and 'ignore' for underflow. But this can be changed, and it can be set individually for different kinds of exceptions. The different behaviors are:
'ignore' : Take no action when the exception occurs.
'warn' : Print a
(via the Python
module).
'raise' : Raise a
.
'call' : Call a specified function.
'print' : Print a warning directly to stdout.
'log' : Record error in a Log object.
These behaviors can be set for all kinds of errors or specific ones:
all : apply to all numeric exceptions
invalid : when NaNs are generated
divide : divide by zero (for integers as well!)
overflow : floating point overflows
underflow : floating point underflows
Note that integer divide-by-zero is handled by the same machinery.
The error handling mode can be configured
context manager.
Examples
>>> withnp.errstate(all='warn'):... np.zeros(5,dtype=np.float32)/0.0<python-input-1>:2: RuntimeWarning: invalid value encountered in dividearray([nan, nan, nan, nan, nan], dtype=float32)>>> withnp.errstate(under='ignore'):... np.array([1.e-100])**10array([0.])>>> withnp.errstate(invalid='raise'):... np.sqrt(np.array([-1.]))...Traceback (most recent call last): File "<python-input-1>", line 2, in <module>np.sqrt(np.array([-1.]))~~~~~~~^^^^^^^^^^^^^^^^^FloatingPointError: invalid value encountered in sqrt>>> deferrorhandler(errstr,errflag):... print("saw stupid error!")>>> withnp.errstate(call=errorhandler,all='call'):... np.zeros(5,dtype=np.int32)/0saw stupid error!array([nan, nan, nan, nan, nan])Setting and getting error handling