np.nan 和 np.NaN 之间的区别

问题描述 投票:0回答:3

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

arrays numpy nan
3个回答
10
投票

所以基本上

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 行)中也提到:-

不能使用相等来测试 NaNs

您可以从这里查看文档:-

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


3
投票

当您尝试

np.nan is np.NAN is np.NaN
时,您将获得
true

我搜索了numpy的官方文档,它说:

numpy.NaN

非数字 (NaN) 的 IEEE 754 浮点表示。

NaN
NAN
nan
的等效定义。请使用
nan
代替
NaN

numpy.NAN

非数字 (NaN) 的 IEEE 754 浮点表示。

NaN
NAN
nan
的等效定义。请使用
nan
代替
NAN


1
投票

实际上即使你测试:

np.nan == np.nan
你会得到
false

© www.soinside.com 2019 - 2024. All rights reserved.