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
(透過 Pythonwarnings
模組)。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'}