NumPy参考 >例行程序 >Mathematical functions > 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
关键字中用户定义的值
替换,infinity被posinf关键字中x.dtype
用户定义的值表示或可由用户定义的值表示的最大有限浮点值替换,而-infinity被最负的有限值
替换可以由neginf关键字中的用户定义的值表示或由用户定义的值表示的浮点值。x.dtype
对于复数dtype,以上内容分别应用于x的每个实部和虚部。
如果x不精确,则不进行替换。
输入数据。
是创建x的副本(True)还是就地替换值(False)。仅当强制转换为数组不需要副本时才执行就地操作。默认值为True。
1.13版中的新功能。
用于填充NaN值的值。如果未传递任何值,则NaN值将替换为0.0。
1.17版中的新功能。
用于填充正无穷大值的值。如果未传递任何值,则正无穷大值将替换为非常大的数字。
1.17版中的新功能。
用于填充负无穷大值的值。如果未传递任何值,则负无穷大值将替换为非常小的(或负的)数字。
1.17版中的新功能。
x,用非限定值替换。如果copy
为False,则可能是x本身。
也可以看看
笔记
NumPy使用IEEE算术二进制浮点标准(IEEE 754)。这意味着非数字不等于无穷大。
例子
>>> 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])