numpy.nan_to_num#
- numpy.nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None)[原始碼]#
將 NaN 替換為零,並將無限大替換為大的有限數字 (預設行為),或使用
nan
、posinf 和/或 neginf 關鍵字,替換為使用者定義的數字。如果 x 是非精確的,則 NaN 會被替換為零或
nan
關鍵字中使用者定義的值,無限大會被替換為x.dtype
可表示的最大有限浮點值,或是 posinf 關鍵字中使用者定義的值,而負無限大會被替換為x.dtype
可表示的最負有限浮點值,或是 neginf 關鍵字中使用者定義的值。對於複數 dtype,以上操作會分別應用於 x 的實部和虛部。
如果 x 不是非精確的,則不會進行任何替換。
- 參數:
- x純量或類陣列
輸入資料。
- copybool,選用
是否建立 x 的副本 (True) 或就地替換值 (False)。僅當轉換為陣列不需要複製時,才會發生就地操作。預設值為 True。
- nanint,float,選用
用於填充 NaN 值的值。如果未傳遞任何值,則 NaN 值將被替換為 0.0。
- posinfint,float,選用
用於填充正無限大值的值。如果未傳遞任何值,則正無限大值將被替換為一個非常大的數字。
- neginfint,float,選用
用於填充負無限大值的值。如果未傳遞任何值,則負無限大值將被替換為一個非常小 (或負) 的數字。
- 回傳:
- outndarray
已替換非有限值的 x。如果
copy
為 False,則這可能是 x 本身。
參見
註解
NumPy 使用 IEEE 二進位浮點算術標準 (IEEE 754)。這表示非數字不等於無限大。
範例
>>> import numpy as np >>> np.nan_to_num(np.inf) 1.7976931348623157e+308 >>> np.nan_to_num(-np.inf) -1.7976931348623157e+308 >>> np.nan_to_num(np.nan) 0.0 >>> x = np.array([np.inf, -np.inf, np.nan, -128, 128]) >>> np.nan_to_num(x) array([ 1.79769313e+308, -1.79769313e+308, 0.00000000e+000, # may vary -1.28000000e+002, 1.28000000e+002]) >>> np.nan_to_num(x, nan=-9999, posinf=33333333, neginf=33333333) array([ 3.3333333e+07, 3.3333333e+07, -9.9990000e+03, -1.2800000e+02, 1.2800000e+02]) >>> y = np.array([complex(np.inf, np.nan), np.nan, complex(np.nan, np.inf)]) array([ 1.79769313e+308, -1.79769313e+308, 0.00000000e+000, # may vary -1.28000000e+002, 1.28000000e+002]) >>> np.nan_to_num(y) array([ 1.79769313e+308 +0.00000000e+000j, # may vary 0.00000000e+000 +0.00000000e+000j, 0.00000000e+000 +1.79769313e+308j]) >>> np.nan_to_num(y, nan=111111, posinf=222222) array([222222.+111111.j, 111111. +0.j, 111111.+222222.j])