nanをイコールで比較しようとしてもうまくいきません。nanはなにと比較しても(自分同士の比較でも)Falseになるような性質を持っているからです。
>>> import numpy as np >>> np.nan == np.nan False
pythonに限らず、おそらく大半のプログラミング言語で同様の仕様のはずです。
細かい話はここなどに載っています。
NaN === NaN が false な理由とutil.isDeepStrictEqual - from scratch
だからisnanなんて関数を用意している、ということですね。
x == np.nanみたいなものを書くとハマるので注意が必要です。
この関係で、numpy配列で比較を行う場合は工夫が必要になります。
numpyでnanを含む配列の同値性をちゃんと計算する - 静かなる名辞
nanは厄介なので、いろいろ気をつける必要があるということですね。