Python numpy 问题:当给定一个填充了NaN(不是数字)的二维numpy数组时,为什么np.all的计算结果不为True?

6qfn3psc  于 2023-02-23  发布在  Python
关注(0)|答案(1)|浏览(113)

我一直在Python中尝试使用np.all,我看过这里的文档:https://numpy.org/doc/stable/reference/generated/numpy.all.html
我期望下面的np.all语句的计算结果为:[对,对,对]和对,但他们没有。
我错过了什么?
我试过下面的代码:

import numpy as np

NA = float("NAN")
arrNA = np.array([[NA, NA, NA], [NA, NA, NA], [NA, NA, NA]])

print(np.all(arrNA == NA, axis=0)) 
#This prints [False, False, False], but every element in the np.array is equal to NA. Why not True?

print(np.all(arr == NA)) 
#This also prints false, but every element in the np.array is NA. Why not True?
gwbalxhn

gwbalxhn1#

根据IEEE浮点标准,NaN不等于其自身:

>>> np.nan == np.nan
False

所以当你写arrNA == NA时,你得到一个布尔数组,其中每个元素都是False
如果要检查是否存在NaN值,可以使用np.isnan

>>> np.all(np.isnan(arrNA))
True

相关问题