dask.array.nan_to_num

dask.array.nan_to_num

dask.array.nan_to_num(*args, **kwargs)

将 NaN 替换为零,将无穷大替换为大的有限数(默认行为),或者使用 nanposinf 和/或 neginf 关键字定义的数字替换。

此文档字符串是从 numpy.nan_to_num 复制的。

Dask 版本可能存在一些不一致性。

如果 x 是不精确的,NaN 会被零或 nan 关键字中用户定义的值替换,无穷大会被 x.dtype 可表示的最大有限浮点值或 posinf 关键字中用户定义的值替换,而负无穷大会被 x.dtype 可表示的最小有限浮点值或 neginf 关键字中用户定义的值替换。

对于复杂的 dtypes,上述操作会分别应用于 x 的实部和虚部。

如果 x 不是不精确的,那么不会进行任何替换。

参数
x标量或类数组对象 (Dask 不支持)

输入数据。

复制bool, 可选 (Dask 不支持)

是否创建 x 的副本(True)或就地替换值(False)。就地操作仅在转换为数组不需要副本时发生。默认值为 True。

1.13 新版功能.

nanint, float, 可选 (Dask 不支持)

用于填充 NaN 值的值。如果没有传递值,则 NaN 值将被替换为 0.0。

1.17 新版功能.

posinfint, float, 可选 (Dask 不支持)

用于填充正无穷大值的值。如果没有传递值,则正无穷大值将被替换为一个非常大的数字。

1.17 新版功能.

neginfint, float, 可选 (Dask 不支持)

用于填充负无穷值的值。如果没有传递值,则负无穷值将被替换为一个非常小(或负)的数。

1.17 新版功能.

返回
ndarray

x,其中非有限值已被替换。如果 copy 为 False,这可能是 x 本身。

参见

isinf

显示哪些元素是正无穷或负无穷。

isneginf

显示哪些元素为负无穷大。

isposinf

显示哪些元素是正无穷大。

isnan

显示哪些元素是 Not a Number (NaN)。

isfinite

显示哪些元素是有限的(不是NaN,不是无穷大)

注释

NumPy 使用 IEEE 二进制浮点数算术标准 (IEEE 754)。这意味着非数字 (Not a Number) 并不等同于无穷大。

示例

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