np.nan 和 np.NaN 的区别

use*_*194 12 arrays numpy 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)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

     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
Run Code Online (Sandbox Code Playgroud)

现在,如果这些相同print(np.nan == np.NaN)应该返回True,为什么数据框中的值填充为NaN

我得到NaN的不是一个数字,所以它可能是这样处理的,因此更改了数据框中的条目,但我仍然不确定。

Anu*_*bas 6

所以基本上 NaNNAN并且nan是nan的等效定义

或者换句话说

NaN并且NAN是的别名nan

np.nan
np.NaN
np.NAN
Run Code Online (Sandbox Code Playgroud)

如果您将检查它们的相等性,它将返回 False

如果您检查所有这 3 个的类型,那么您会发现它们都是相同的 type(float)

但让

a=np.NaN
b=np.NAN
c=np.nan
Run Code Online (Sandbox Code Playgroud)

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

即使在文档(第 4 行)中也说:-

不能使用相等来测试 NaN

您可以从此处查看文档:-

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