1. ホーム
  2. python

[解決済み] numpy.ndarrayで非数値的な値を含むすべての行を削除する方法

2022-10-25 15:23:49

質問

基本的に、私はいくつかのデータ分析をしています。 私はnumpy.ndarrayとしてデータセットを読み込み、いくつかの値が欠落しています(単に存在しないか、あることによって NaN であったり、quotと書かれた文字列であったりします。 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 .

説明 np.isnan(a) は同様の配列を返しますが True ここで NaN , False 他の場所で .any(axis=1)m*n の配列から n に、論理的な or 演算を行全体に対して行う。 ~ を反転させる True/Falsea[ ] は、元の配列の行だけを選びます。 True を持つ行を選びます。