50
基本的に、私はいくつかのデータ分析を行っています。私はnumpy.ndarrayとしてデータセットを読み込み、いくつかの値が欠落しています(ちょうどそこにいないか、NaN
であるか、 "NA
"と書かれた文字列です)。numpy.ndarrayの数値以外の値を含むすべての行を削除する方法
このようなエントリを含むすべての行を削除します。私はどうやってそれをnumpyのndarrayで行うのですか?
基本的に、私はいくつかのデータ分析を行っています。私はnumpy.ndarrayとしてデータセットを読み込み、いくつかの値が欠落しています(ちょうどそこにいないか、NaN
であるか、 "NA
"と書かれた文字列です)。numpy.ndarrayの数値以外の値を含むすべての行を削除する方法
このようなエントリを含むすべての行を削除します。私はどうやってそれをnumpyのndarrayで行うのですか?
>>> a = np.array([[1,2,3], [4,5,np.nan], [7,8,9]])
array([[ 1., 2., 3.],
[ 4., 5., nan],
[ 7., 8., 9.]])
>>> a[~np.isnan(a).any(axis=1)]
array([[ 1., 2., 3.],
[ 7., 8., 9.]])
a
に再割り当てしてください。
説明:は、True
と同じ配列を返します。ここで、NaN
,False
は他の場所です。 .any(axis=1)
は~
はTrue/False
を反転しa[ ]
は括弧内True
を有する元の配列からだけの行を選択し、全体の行の論理or
操作でn
からm*n
アレイを減少させます。
ありがとうございます。これが何をしているのかを説明することは可能でしょうか?まだnumpyに少し新しく:) – zebra
@zebra - 説明しました。 – eumiro
'np.isfinite'はこの場合にも有用で、'±Inf'値を取り除きたいときにも便利です。有限の実数に対してのみ真を返すので、 '〜'は必要ありません。 – naught101