[NumPy] 11. NumPy配列のNaNに関するいろいろな処理

NumPy

はじめに

np.arrayにおけるNaNに関する処理について、いろいろと説明する。

解説

データの生成

配列の一部をNaNにする

2番目の要素をnp.nanとすることでNaNにできる。

NaNであるかの判定

np.isnan(x)NaNの部分がTrueとなった配列が返る。

NaNであるインデックスを取得

np.wherenp.isnan(x)を組み合わせることでNaNである部分のインデックスが得られる。結果はtupleで得られるので[0]とすることでnp.arrayで結果が得られる。

NaNではないインデックスを取得

~np.isnan(x)のように否定演算子をつけることでNaNではないインデックスを得ることができる。

配列中のNaNを除去

上記のNaNではないインデックスを配列に適用することでNaNを除去できる。

配列中のNaNを他の値に置換

np.nan_to_num()の第一引数にNaNを含む配列、第2引数でNaNを置換する数を指定する。

x==np.nanのようにしても置換することはできない。

NaNの数をカウント

np.count_nonzero()Trueが何個あるかがわかるので、np.isnanと組み合わせることでNaNの数がわかる。

NaNを除外して計算

合計

NaNがある場合は、np.nansum()を用いる。下記のように、NaNがあると計算値はNaNになる。

平均

中央値

標準偏差

累積和

最大値のインデックス

最小値のインデックス

最小値&最大値

パーセンタイル

コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

参考

numpy.isnan — NumPy v1.18 Manual
numpy.nansum — NumPy v1.18 Manual
Constants — NumPy v1.18 Manual

コメント