numpy.seterr#

numpy.seterr(all=None, divide=None, over=None, under=None, invalid=None)[原始碼]#

設定如何處理浮點錯誤。

請注意,整數純量型別 (例如 int16) 的運算會像浮點數一樣處理,並受到這些設定的影響。

參數:
all{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 選擇性

一次設定所有類型浮點錯誤的處理方式

  • ignore: 發生例外時不採取任何動作。

  • warn: 列印 RuntimeWarning (透過 Python warnings 模組)。

  • raise: 引發 FloatingPointError

  • call: 呼叫使用 seterrcall 函數指定的函數。

  • print: 直接列印警告到 stdout

  • log: 在 seterrcall 指定的 Log 物件中記錄錯誤。

預設值是不變更目前的行為。

divide{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 選擇性

除以零的處理方式。

over{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 選擇性

浮點溢位的處理方式。

under{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 選擇性

浮點欠位的處理方式。

invalid{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, 選擇性

無效浮點運算的處理方式。

傳回值:
old_settingsdict

包含舊設定的字典。

另請參閱

seterrcall

為 ‘call’ 模式設定回呼函數。

geterr, geterrcall, errstate

註解

浮點例外在 IEEE 754 標準中定義 [1]

  • 除以零:從有限數字獲得無限結果。

  • 溢位:結果太大而無法表示。

  • 欠位:結果非常接近零,以至於失去了一些精確度。

  • 無效運算:結果不是可表示的數字,通常表示產生了 NaN。

範例

>>> import numpy as np
>>> orig_settings = np.seterr(all='ignore')  # seterr to known value
>>> np.int16(32000) * np.int16(3)
np.int16(30464)
>>> np.seterr(over='raise')
{'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'}
>>> 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 scalar multiply
>>> old_settings = np.seterr(all='print')
>>> np.geterr()
{'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}
>>> np.int16(32000) * np.int16(3)
np.int16(30464)
>>> np.seterr(**orig_settings)  # restore original
{'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}