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


Python numpy seterr用法及代碼示例

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

用法:

numpy.seterr(all=None, divide=None, over=None, under=None, invalid=None)

設置如何處理浮點錯誤。

請注意,整數標量類型(例如 int16 )的操作像浮點一樣處理,並受這些設置的影響。

參數

all {‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’},可選

一次性設置所有類型的浮點錯誤的處理:

  • ignore:發生異常時不采取任何措施。

  • 警告:打印一個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_settings dict

包含舊設置的字典。

注意

浮點異常在 IEEE 754 標準 [1] 中定義:

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

  • 溢出:結果太大而無法表達。

  • 下溢:結果非常接近於零,以至於丟失了一些精度。

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

1

https://en.wikipedia.org/wiki/IEEE_754

例子

>>> 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
>>> old_settings = np.seterr(all='print')
>>> np.geterr()
{'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}
>>> np.int16(32000) * np.int16(3)
30464

相關用法


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