上一主题

numpy.errstate

下一主题

numpy.geterrobj

numpy.seterrobj

numpy.seterrobj(errobj)

设置定义浮点错误处理的对象。

错误对象包含定义Numpy中的错误处理行为的所有信息。seterrobj由设置错误处理行为(seterrseterrcall)的其他函数在内部使用。

参数:

errobj:list

error对象,一个包含三个元素的列表:[内部numpy缓冲区大小,错误掩码,错误回调函数]。

错误掩码是一个单个整数,它保存有关所有四个浮点错误的处理信息。每个错误类型的信息包含在整数的三个位中。如果我们在base 8中打印,我们可以看到对“invalid”,“under”,“over”和“divide”(按顺序)设置了什么处理。打印的字符串可以用解释

  • 0:'ignore'
  • 1:'warn'
  • 2:'raise'
  • 3:'call'
  • 4:'print'
  • 5:'log'

笔记

有关浮点异常和处理选项类型的完整文档,请参见seterr

例子

>>> old_errobj = np.geterrobj()  # first get the defaults
>>> old_errobj
[10000, 0, None]
>>> def err_handler(type, flag):
...     print("Floating point error (%s), with flag %s" % (type, flag))
...
>>> new_errobj = [20000, 12, err_handler]
>>> np.seterrobj(new_errobj)
>>> np.base_repr(12, 8)  # int for divide=4 ('print') and over=1 ('warn')
'14'
>>> np.geterr()
{'over': 'warn', 'divide': 'print', 'invalid': 'ignore', 'under': 'ignore'}
>>> np.geterrcall() is err_handler
True