Floating point error handling — NumPy v2.6.dev0 Manual

Error handling settings are stored in

contextvars

allowing different threads or async tasks to have independent configurations. For more information, see

Context Local State

.

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

RuntimeWarning

(via the Python

warnings

module).

'raise' : Raise a

FloatingPointError

.

'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

numpy.errstate

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

#