numpy.nan_to_num#

numpy.nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None)[原始碼]#

將 NaN 替換為零,並將無限大替換為大的有限數字 (預設行為),或使用 nanposinf 和/或 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 本身。

參見

isinf

顯示哪些元素是正或負無限大。

isneginf

顯示哪些元素是負無限大。

isposinf

顯示哪些元素是正無限大。

isnan

顯示哪些元素不是數字 (NaN)。

isfinite

顯示哪些元素是有限的 (不是 NaN,不是無限大)

註解

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])