NumPy

Previous topic

numpy.setbufsize

Next topic

numpy.seterrcall

This is documentation for an old release of NumPy (version 1.18). Read this page in the documentation of the latest stable release (version 2.2).

numpy.seterr

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

Set how floating-point errors are handled.

Note that operations on integer scalar types (such as int16) are handled like floating point, and are affected by these settings.

Parameters
all{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional

Set treatment for all types of floating-point errors at once:

  • ignore: Take no action when the exception occurs.

  • warn: Print a RuntimeWarning (via the Python warnings module).

  • raise: Raise a FloatingPointError.

  • call: Call a function specified using the seterrcall function.

  • print: Print a warning directly to stdout.

  • log: Record error in a Log object specified by seterrcall.

The default is not to change the current behavior.

divide{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional

Treatment for division by zero.

over{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional

Treatment for floating-point overflow.

under{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional

Treatment for floating-point underflow.

invalid{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional

Treatment for invalid floating-point operation.

Returns
old_settingsdict

Dictionary containing the old settings.

See also

seterrcall

Set a callback function for the ‘call’ mode.

geterr, geterrcall, errstate

Notes

The floating-point exceptions are defined in the IEEE 754 standard [1]:

  • Division by zero: infinite result obtained from finite numbers.

  • Overflow: result too large to be expressed.

  • Underflow: result so close to zero that some precision was lost.

  • Invalid operation: result is not an expressible number, typically indicates that a NaN was produced.

1

https://en.wikipedia.org/wiki/IEEE_754

Examples

>>>
>>> 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
>>>
>>> from collections import OrderedDict
>>> old_settings = np.seterr(all='print')
>>> OrderedDict(np.geterr())
OrderedDict([('divide', 'print'), ('over', 'print'), ('under', 'print'), ('invalid', 'print')])
>>> np.int16(32000) * np.int16(3)
30464