静かなる名辞

pythonとプログラミングのこと


【python】bool(nan)とかnanをastype(bool)するとTrueになるので気をつけよう

なんのことなのか

 タイトルの通りです。

>>> import numpy as np
>>> bool(np.nan)
True
>>> np.array([np.nan]).astype(bool)
array([ True])

 いやまあ、確かにPythonの言語仕様上そうなんですが、釈然としない気も・・・

なんで困るのか

 0かそれ以外かをそのままboolとして扱いたい時があります。

 返り値がnanになりえる関数を使った後、astypeでboolにすればいいと思っているとハマり得ます。

なんてこった……

 nanとか面倒くさいので、タイムマシンがあったら仕様を考えた人に会いに行って、説得すると思います。

 いや、これに関してはPythonの言語仕様のせいかもしれませんが……