web-dev-qa-db-ja.com

numpy配列のすべてのNaN値のインデックスリストを取得するにはどうすればよいですか?

次のように定義されたnumpy配列があるとします。

[[1,2,3,4],
[2,3,NaN,5],
[NaN,5,2,3]]

ここで、欠損値のすべてのインデックスを含むリストを作成します。この場合、[(1,2),(2,0)]です。

それを行う方法はありますか?

46
xxx222

np.isnannp.argwhere と組み合わせて

x = np.array([[1,2,3,4],
              [2,3,np.nan,5],
              [np.nan,5,2,3]])
np.argwhere(np.isnan(x))

出力:

array([[1, 2],
       [2, 0]])
85
michael_j_ward

np.where を使用して、配列のNan値とmapの各値に対応するブール条件を一致させ、tuplesのリストを生成できます。

>>>list(map(Tuple, np.where(np.isnan(x))))
[(1, 2), (2, 0)]
16
Nickil Maveli