numpy.
seterr
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.
int16
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).
warnings
raise: Raise a FloatingPointError.
call: Call a function specified using the seterrcall function.
seterrcall
print: Print a warning directly to stdout.
stdout
log: Record error in a Log object specified by seterrcall.
The default is not to change the current behavior.
Treatment for division by zero.
Treatment for floating-point overflow.
Treatment for floating-point underflow.
Treatment for invalid floating-point operation.
Dictionary containing the old settings.
See also
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.
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