arrays - np.nan 和 np.NaN 之间的区别
问题描述
np.Nan 和 np.nan 有什么区别吗?根据我的理解,两者都用于空值,但如果你看这里
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame([[np.nan,2,np.nan,0],[3,4,np.nan,1],[np.nan,np.nan,np.nan,5]],columns=list('ABCD'))
print(df)
print(np.nan == np.NaN)
我得到以下输出:
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN NaN NaN 5
False
Process finished with exit code 0
现在,如果这些相同print(np.nan == np.NaN)
应该返回True
,为什么数据框中的值填充为NaN
?
我得到NaN
的不是一个数字,因此它可能会以这种方式处理它,因此会更改数据框中的条目,但我仍然不确定。
解决方案
所以基本上
NaN
,NAN
并且nan
是nan的等价定义
或者换句话说
NaN
并且NAN
是的别名nan
np.nan
np.NaN
np.NAN
如果您要检查它们的相等性,它会返回False
如果您检查所有这 3 个的类型,那么您会发现它们都是相同的type(float)
但让
a=np.NaN
b=np.NAN
c=np.nan
现在,如果您要检查 a、b 和 c 的相等性,它会返回True
即使在文档中(第 4 行),也有人说:-
不能使用相等来测试 NaN
您可以从此处查看文档:-
https://numpy.org/doc/stable/user/misc.html?highlight=numpy%20nan
推荐阅读
- swift - 以编程方式创建自动调整大小的 TableView
- python-2.7 - python - 安装 spaCy 时出错 (UnicodeDecodeError)
- c# - 如果我以任何 CPU 或 x64 为目标,则 C# Winform 应用程序错误
- python - 使用 tensorflow 将占位符与另一个占位符一起馈送
- android - 警报管理器仅触发 Android 中的最后一个计划任务
- java - 在 Android 应用程序开发中构建片段时,Gradle 构建失败
- javascript - React JS onClick 设置点击索引的状态
- r - 如果模式不同,则从字符串中提取子字符串
- javascript - 从 for 循环中填充对象列表的速记方法
- java - 在 Eclipse 中运行和进入项目文件夹并使用 .jar 之间的区别