Numpy Where 함수 및 다중 조건
이 질문은 Numpy where 함수 및 다중 조건에 따른 요소 선택과 관련이 있습니다.
문제 및 문제 설명
사용자가 특정 범위에 속하는 배열(dists)의 요소를 선택하기 위해 두 가지 조건(보다 큼 및 보다 작음)을 적용하려고 합니다. 그러나 where 함수를 (np.where(dists >= r)) 및 (np.where(dists <= r dr))로 사용하면 예상치 못한 결과가 발생합니다.
해결책
방법 1: 조건을 단일 기준으로 결합
이 특별한 경우에는 두 조건을 단일 기준으로 결합하는 것이 좋습니다.
dists[abs(dists - r - dr/2.) <= dr/2.]
이 간단한 접근 방식은 거리와 범위 중심(r dr/2) 간의 차이의 절대값이 범위 너비(dr/2)의 절반보다 작거나 같은지 확인합니다.
방법 2: 팬시 인덱싱 사용
또는 팬시 인덱싱을 사용하여 부울 마스크를 사용하여 원래 배열에서 요소를 직접 선택할 수 있습니다.
dists[(dists >= r) & (dists <= r + dr)]
이 방법의 이점 방법은 요소별 논리 연산자(& 및 |)를 사용하여 조건을 결합하여 기준을 충족하는 요소를 식별하는 바이너리 마스크를 생성한다는 것입니다.
문제 설명
(np.where(dists >= r)) 및 (np.where(dists <= r dr))를 사용하는 원래 접근 방식은 np.where가 부울 배열이 아닌 인덱스 목록을 반환하기 때문에 실패합니다. 두 숫자 목록 사이를 비교하면 논리적 비교가 아닌 두 번째 목록이 평가됩니다.
위 내용은 `where` 함수를 사용하여 여러 조건을 충족하는 Numpy 배열에서 요소를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!