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不是一个数字,所以它可能会这样处理它,从而更改数据帧中的条目,但我仍然不确定。

所以基本上NaNNANnan是nan 的等价定义

或者换句话说

NaNNANnan的别名

np.nan
np.NaN
np.NAN

如果您要检查这些值的相等性,它将返回False

如果你检查这3种类型,你会发现它们都是相同的type(float)

但是让

a=np.NaN
b=np.NAN
c=np.nan

现在,如果您要检查a、b和c的相等性,它将返回True(现在不起作用(

即使在文件(第4行(中也有这样的说法:-

无法使用相等来测试NaNs

你可以在这里查看文档:-

https://numpy.org/doc/stable/user/misc.html?highlight=numpy%20nan

  • 当您尝试:np.nan is np.NAN is np.NaN时,您将获得true
  • 我搜索了努皮的官方医生,上面写着:
    • 非数字(NaN(的IEEE 754浮点表示。NaN和NaN是NaN的等效定义。请使用nan而不是nan
    • 非数字(NaN(的IEEE 754浮点表示。NaN和NaN是NaN的等效定义。请使用nan而不是nan

实际上,即使您测试:np.nan == np.nan你会得到false

最新更新