[python] 숫자가 아닌 값을 포함하는 numpy.ndarray의 모든 행을 제거하는 방법

기본적으로 데이터 분석을하고 있습니다. 나는 데이터 셋을 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.

설명 : np.isnan(a)와 비슷한 배열 반환 , 다른 곳에서. 전체 행에 대한 논리 연산 을 사용 하여 배열을 로 축소 하고 대괄호 안에 있는 원래 배열의 행만 반전 하고 선택합니다 .TrueNaNFalse.any(axis=1)m*nnor~True/Falsea[ ]True


답변