반응형
numpy ndarray 행렬에서 NaN이 아닌 요소의 수를 계산해야합니다. 파이썬에서 이것을 어떻게 효율적으로 할 수 있습니까? 이를 달성하기위한 간단한 코드는 다음과 같습니다.
import numpy as np
def numberOfNonNans(data):
count = 0
for i in data:
if not np.isnan(i):
count += 1
return count
numpy에 내장 기능이 있습니까? 빅 데이터 분석을하고 있기 때문에 효율성이 중요합니다.
도움을 주셔서 감사합니다!
해결 방법
np.count_nonzero(~np.isnan(data))
~
는 np.isnan
에서 반환 된 부울 행렬을 반전합니다.
np.count_nonzero
는 0 \ false가 아닌 값을 계산합니다. .sum
은 동일한 결과를 제공해야합니다. 그러나 count_nonzero
를 사용하는 것이 더 명확 할 수 있습니다.
테스트 속도 :
In [23]: data = np.random.random((10000,10000))
In [24]: data[[np.random.random_integers(0,10000, 100)],:][:, [np.random.random_integers(0,99, 100)]] = np.nan
In [25]: %timeit data.size - np.count_nonzero(np.isnan(data))
1 loops, best of 3: 309 ms per loop
In [26]: %timeit np.count_nonzero(~np.isnan(data))
1 loops, best of 3: 345 ms per loop
In [27]: %timeit data.size - np.isnan(data).sum()
1 loops, best of 3: 339 ms per loop
data.size-np.count_nonzero (np.isnan (data))
는 여기서 거의 가장 빠른 것 같습니다. 다른 데이터는 다른 상대 속도 결과를 제공 할 수 있습니다.
참조 페이지 https://stackoverflow.com/questions/21778118
반응형
'파이썬' 카테고리의 다른 글
파이썬 Pandas의 데이터 프레임에서 숫자가 아닌 행을 찾으십니까? (0) | 2020.12.23 |
---|---|
파이썬 목록을 다시 정렬하려면 어떻게해야합니까? (0) | 2020.12.22 |
파이썬 matplotlib Python의 설치 문제 (0) | 2020.12.22 |
파이썬 sqlalchemy는 NULL이 아닙니다. (0) | 2020.12.22 |
파이썬 괄호없이 함수를 호출하는 목적 python (0) | 2020.12.22 |
댓글