기본적으로 데이터 분석을하고 있습니다. 나는 데이터 셋을 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)
와 비슷한 배열 반환 , 다른 곳에서. 전체 행에 대한 논리 연산 을 사용 하여 배열을 로 축소 하고 대괄호 안에 있는 원래 배열의 행만 반전 하고 선택합니다 .True
NaN
False
.any(axis=1)
m*n
n
or
~
True/False
a[ ]
True
any
해야 all
합니다. "모두가 유한 한"행을 선택하려고하기 때문에 "아무 것도 nan이 아닌"행을 선택하는 대신.
np.isfinite
이 경우뿐만 아니라±Inf
값을 제거하려는 경우에도 유용 합니다.~
유한 실수에 대해서만 true를 반환하므로는 필요하지 않습니다 .