numpy.nan_to_num #
- 麻木的。nan_to_num ( x , copy = True , nan = 0.0 , posinf = None , neginf = None ) [来源] #
将 NaN 替换为零,将无穷大替换为大的有限数(默认行为)或用户使用
nan
、 posinf和/或neginf关键字定义的数字。如果x不精确,NaN 将被零或关键字中的用户定义值替换 ,无穷大将被posinf关键字中的用户定义值
nan
可表示的最大有限浮点值替换,-infinity 将被最负的有限值替换由neginf关键字中的用户定义值表示的浮点值。x.dtype
x.dtype
对于复数数据类型,上述内容分别应用于x的每个实部和虚部。
如果x不是不精确,则不进行替换。
- 参数:
- x标量或类似数组
输入数据。
- 复制布尔值,可选
是否创建x的副本(True)或就地替换值(False)。仅当转换为数组不需要副本时,才会发生就地操作。默认为 True。
1.13 版本中的新功能。
- nan int,浮点数,可选
用于填充 NaN 值的值。如果未传递任何值,则 NaN 值将替换为 0.0。
1.17 版本中的新增功能。
- posinf int、浮点数、可选
用于填充正无穷值的值。如果没有传递任何值,则正无穷大值将被替换为一个非常大的数字。
1.17 版本中的新增功能。
- neginf int,浮点数,可选
用于填充负无穷值的值。如果没有传递任何值,则负无穷大值将被替换为非常小的(或负数)数字。
1.17 版本中的新增功能。
- 返回:
- 输出数组
x,替换非有限值。如果
copy
为 False,则这可能是x本身。
也可以看看
笔记
NumPy 使用 IEEE 二进制浮点算术标准 (IEEE 754)。这意味着“Not a Number”并不等于无穷大。
例子
>>> 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])