np.nan同士を比較演算子で比較すると等しくないと評価される性質を利用すれば、配列中のnp.nanの要素の位置を調べる事ができます。
>>> np.nan == np.nan
False
>>> np.nan != np.nan
True
このようにnp.nanとnp.nanは等しくないと評価されます。
>>> a = np.array([5, 3, np.nan, 6, np.nan])
>>> a != a
array([False, False, True, False, True])
配列の場合は、同じ配列同士を比較演算子(!=)で比較するとこのような結果になります。数値の入った要素については、同じ数値同士は等しいのでFalse、np.nan同士は等しくないのでTrueとなります。なので、Trueの箇所がnp.nanであるということになります。
np.nanの要素のインデックス値の配列が欲しい場合は、下記の様にnp.arange関数で数列を作り、上記のbool型配列を使ってブーリアンマスクすれば得られます。
>>> np.arange(a.shape[0])[a != a]
array([2, 4])
関連項目
関数numpy.arrayの使い方の例
関数numpy.arangeの使い方の例
属性ndarray.shapeの使い方の例