반응형
numpy 배열의 각 행에 함수를 적용하려고합니다. 이 함수가 true로 평가되면 행을 유지하고, 그렇지 않으면 삭제합니다. 예를 들어 내 기능은 다음과 같습니다.
def f(row):
if sum(row)>10: return True
else: return False
다음과 비슷한 것이 있는지 궁금합니다.
np.apply_over_axes()
numpy 배열의 각 행에 함수를 적용하고 결과를 반환합니다. 나는 다음과 같은 것을 바라고 있었다.
np.filter_over_axes()
numpy 배열의 각 행에 함수를 적용하고 함수가 true를 반환 한 행만 반환합니다. 이와 같은 것이 있습니까? 아니면 for 루프를 사용해야합니까?
해결 방법
import numpy as np
x = np.random.randn(20, 3)
x_new = x[np.sum(x, axis=1) > .5]
def myfunc(row):
return sum(row) > .5
bool_arr = np.array([myfunc(row) for row in x])
x_new = x[bool_arr]
이렇게하면 비교적 깔끔한 방식으로 작업을 수행 할 수 있지만 벡터화 된 버전보다 훨씬 느립니다. 예 :
x = np.random.randn(5000, 200)
%timeit x[np.sum(x, axis=1) > .5]
# 100 loops, best of 3: 5.71 ms per loop
%timeit x[np.array([myfunc(row) for row in x])]
# 1 loops, best of 3: 217 ms per loop
참조 페이지 https://stackoverflow.com/questions/26154711
반응형
'파이썬' 카테고리의 다른 글
파이썬 Pandas Series와 단일 열 DataFrame의 차이점은 무엇입니까? (0) | 2020.12.06 |
---|---|
파이썬 판다에서 단일 열을 반올림 (0) | 2020.12.06 |
파이썬 팬더 그룹 후 적용 병렬화 (0) | 2020.12.06 |
파이썬 인덱스 배열을 기반으로 배열을 재정렬하는 방법 (0) | 2020.12.06 |
파이썬 Mac + Anaconda에서 Qt 디자이너 앱은 어디에 있습니까? (0) | 2020.12.06 |
댓글