生データにnanが入ってるってことはそれなりによくある。
nan入っててもそのまま処理してくれたり、nan_policyとかを手動でセットすればオーケって場合は楽なんだけど、そうでない場合もあって結構めんどくさいことも。
それでどうするかっていうと、まあ状況によってnanを0にしたり、infにしたり、周りの値の平均値にしたり、含む行を削除しちゃったり、などなど。
numpyのndarrayにnanがいる場合
データは2列複数行のndarray。
isnan()でnanの場所を探して書き換える。
data[i][np.isnan(data[i])]=0 data[i][np.isnan(data[i])]=np.inf
など。
同じくisnan()で探して含む行を削除する
こうやってanyを使って抽出するってのが一番シンプル? 文字数も少ないし。
data[i]=data[i][~np.isnan(data[i]).any(axis=1)]
deleteを使って書くならこんな感じかな? データによって少し変える必要があるかもしれないが。私のは2列目にnanが入ってるのでこう書いた。
data[i] = np.delete(data[i],np.where(np.isnan(data[i][:,1])),axis=0)
今の所はこのくらい。
pandasとか他の形式で扱うことがあったら追記する。
関連記事
D