當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy seterrcall用法及代碼示例


本文簡要介紹 python 語言中 numpy.seterrcall 的用法。

用法:

numpy.seterrcall(func)

設置浮點錯誤回調函數或日誌對象。

有兩種方法可以捕獲浮點錯誤消息。首先是使用 seterr 將 error-handler 設置為 ‘call’。然後,設置要使用此函數調用的函數。

第二個是使用 seterr 將 error-handler 設置為 ‘log’。浮點錯誤然後觸發對所提供對象的‘write’ 方法的調用。

參數

func 可調用的 f(err, flag) 或帶有 write 方法的對象

調用浮點錯誤的函數(‘call’-mode)或使用‘write’方法記錄此類消息的對象(‘log’-mode)。

call 函數有兩個參數。第一個是說明錯誤類型的字符串(例如“divide by zero”、“overflow”, “underflow” 或“invalid value”),第二個是狀態標誌。該標誌是一個字節,其四個最低有效位指示錯誤類型,“divide”, “over”, “under”, “invalid” 之一:

[0 0 0 0 divide over under invalid]

換句話說,flags = divide + 2*over + 4*under + 8*invalid

如果提供了一個對象,它的 write 方法應該接受一個參數,一個字符串。

返回

h 可調用,日誌實例或無

舊的錯誤處理程序。

例子

錯誤回調:

>>> def err_handler(type, flag):
...     print("Floating point error (%s), with flag %s" % (type, flag))
...
>>> saved_handler = np.seterrcall(err_handler)
>>> save_err = np.seterr(all='call')
>>> np.array([1, 2, 3]) / 0.0
Floating point error (divide by zero), with flag 1
array([inf, inf, inf])
>>> np.seterrcall(saved_handler)
<function err_handler at 0x...>
>>> np.seterr(**save_err)
{'divide': 'call', 'over': 'call', 'under': 'call', 'invalid': 'call'}

記錄錯誤信息:

>>> class Log:
...     def write(self, msg):
...         print("LOG: %s" % msg)
...
>>> log = Log()
>>> saved_handler = np.seterrcall(log)
>>> save_err = np.seterr(all='log')
>>> np.array([1, 2, 3]) / 0.0
LOG: Warning: divide by zero encountered in true_divide
array([inf, inf, inf])
>>> np.seterrcall(saved_handler)
<numpy.core.numeric.Log object at 0x...>
>>> np.seterr(**save_err)
{'divide': 'log', 'over': 'log', 'under': 'log', 'invalid': 'log'}

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.seterrcall。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。