基本的に、私はいくつかのデータ分析を行っています。データセットをnumpy.ndarrayとして読み取りましたが、値の一部が欠落しています(存在しない、存在するNaN
、または " NA
"と記述された文字列である)。
このようなエントリを含むすべての行をクリーンアップしたいと思います。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
ます。
説明:where 、他の場所でnp.isnan(a)
同様の配列を返します。配列を行全体に対する論理演算でに縮小し、元の配列から括弧内にある行のみを反転して選択します。True
NaN
False
.any(axis=1)
m*n
n
or
~
True/False
a[ ]
True
any
する必要がありall
ます。「どれもnanではない」行を選択するのではなく、「すべてが有限」である行を選択したいので。
np.isfinite
この場合や、±Inf
値を削除したい場合にも役立ちます。~
有限の実数に対してのみtrueを返すため、は必要ありません。