NumPy使用IEEE标准的二进制浮点运算(IEEE 754)。这意味着Not a Number并不等同于无穷大。NaN 和NAN 是nan 的别名。
np.nan
np.nan是Not a Number的IEEE 754浮点表示。nan代表 "不是一个数字",它的主要常数是作为数组中任何缺失的数值的占位符。
nan值是numpy中定义的常数:nan、inf。 NaN可以作为穷人的面具,这意味着你不关心原始值是什么。
虽然我们已经介绍了一些处理NaN值的不同方法,但我想更深入地介绍一下NumPy中的一些NaN函数。
你所要处理的大部分数据都是给你的。正如我们所看到的,当我们使用Pandas导入DataFrame时,任何缺失的值都会自动替换为NaN作为占位符。但是我们也可以在NumPy中直接模仿同样的行为。
语法
numpy.nan
例子
请看下面的代码:
# app.py
import numpy as np
myarr = np.array([1, 0, np.nan, 3])
print(myarr)
输出
python3 app.py
[ 1. 0. nan 3.]
我希望你从这里得到的重要信息是,我们所有的整数都被转换为浮点数,这是因为NumPy已经将NaN数据类型定义为浮点数。所以由于隐式上传法,我们所有的元素都被转换为浮点数 数据类型。
当对其进行数学运算时,NaN项也优先于其他每项。
请看控制台中的nan值:
# app.py
import numpy as np
print(np.nan)
输出
python3 app.py
nan
让我们比较两个NaN值,看看它们是否相同:
# app.py
import numpy as np
print(np.nan == np.nan)
輸出
python3 app.py
False
Numpy isnan()
Numpy isnan()函数测试NaN的元素,并将结果作为布尔数组返回。Numpy使用IEEE二进制浮点运算标准(IEEE 754)。这意味着Not a Number并不等同于无穷大:
# app.py
import numpy as np
print(np.isnan(np.nan))
输出
python3 app.py
True
结论
当你为机器学习或人工智能准备数据时,首先必须检查它,然后确保你在预处理阶段已经删除或替换了每个NaN元素。
缺少一个NaN元素都会给你的最终结果带来重大问题,因为它能够在你的数据中传播。
本教程到此结束。