여러 조건을 갖는 Numpy where 함수
배열을 처리할 때 NumPy의 np.where 함수는 특정 조건을 선택하는 데 유용한 도구가 될 수 있습니다. 특정 조건에 따른 요소. 그러나 여러 조건을 동시에 적용하려고 하면 혼란이 발생할 수 있습니다.
질문에 제시된 시나리오를 생각해 보세요. 목표는 dists라는 배열에서 지정된 범위 내의 거리를 선택하는 것입니다. 다음 코드가 시도되었습니다.
dists[(np.where(dists >= r)) and (np.where(dists <p>그러나 이 코드는 두 조건이 아닌 r dr보다 작거나 같은 거리만 선택합니다. 이런 일이 발생하는 이유를 이해하려면 np.where가 부울 배열이 아닌 인덱스 목록을 반환한다는 점에 유의하는 것이 중요합니다.</p><p><strong>코드 수정</strong></p><p>올바른 방법 np.where에 여러 조건을 적용하는 것은 아래와 같이 요소별 연산자(AND의 경우 &, OR의 경우 |)를 사용하여 결합된 부울 배열을 생성하는 것입니다.</p><pre class="brush:php;toolbar:false">dists[(dists >= r) & (dists <p>또는 결과가 특별히 필요한 경우 인덱스 형식에서는 다음 구문을 사용합니다.</p><pre class="brush:php;toolbar:false">np.where((dists >= r) & (dists <p><strong>원래 코드가 작동하지 않은 이유</strong></p><p>원래 질문에 포함된 코드 시퀀스는 두 가지를 평가했습니다. 조건을 독립적으로 분리합니다. 먼저 r보다 크거나 같은 거리, r보다 작거나 같은 거리 dr입니다. 그러나 np.where는 인덱스를 반환하므로 를 사용하여 이 두 조건의 결과를 연결하면 두 번째 조건의 인덱스만 선택됩니다.</p><p>요소별로 조건을 결합하는 부울 배열을 생성하려면 연산자가 사용됩니다. 이렇게 하면 배열의 각 요소가 동시에 두 조건에 따라 True 또는 False가 됩니다.</p><p><strong>대체 접근 방식</strong></p><p>범위 내에서 거리를 선택하는 또 다른 방법은 다음과 같습니다. 아래에 설명된 대로 조건부 인덱싱을 사용합니다.</p><pre class="brush:php;toolbar:false">dists[abs(dists - (r + dr / 2.)) <p>이 옵션은 각 거리가 r을 중심으로 하는 범위 내에 있는지 확인하는 부울 배열을 생성하여 더 간결하고 읽기 쉬운 솔루션을 제공합니다.</p>
위 내용은 NumPy의 `np.where` 기능을 사용하여 여러 조건에 따라 요소를 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!