In [1]:
import numpy as np
#numpyはnanを作ってくれる
hoge = np.nan
print(hoge)
普通にnanが出力される.次にNaNの判定について.
In [2]:
if hoge == np.nan:
print("True")
else:
print("False")
あれっ?ってなる.NaNを普段扱う,整数とか文字列とかと同じ感覚で扱ってはいけないですね.
ではどのように判定するか.Pythonの挙動として一番簡単な方法は自分と自分を比べる方法である.ほかにはmathパッケージのisnanを使う方法もある.前者は戻り値FalseがNaNを意味することに注意.
In [3]:
if hoge == hoge:
print("True")
else:
print("Flase")
In [4]:
import math
hoge2 = np.pi
print(math.isnan(hoge))
print("------")
print(math.isnan(hoge2))
おわりに¶
hoge == hogeの方法は単純だしわかりやすいが,リストの要素を対象としてhoge[i] == hoge[i]とかやってしまうと,実行速度が心配になる...