728x90
반응형
본 포스팅은 넘파이 어레이의 특정 조건에 부합하는 인덱스를 찾아주는 np.where()에 대해 정리할 예정이다.
다만 이전에 포스팅한 내용은 조건 하나의 경우지만 이번에는 두 개의 조건에 동시에 부합하는 경우 어떻게 사용이 되는지 포스팅하겠다.
np.where() - AND 연산 (&)
우선 두개의 조건을 둘 다 부합할 경우 즉, AND 논리의 경우 어떻게 np.where()을 사용해야 하는지 예시를 통해 정리하겠다.
[np.where((조건_1)&(조건_2)]
import numpy as np
nums = np.array([1,2,3,4,5,6,7,8,9,10])
np.where(nums > 3)
# (array([3, 4, 5, 6, 7, 8, 9], dtype=int64),)
np.where(nums < 6)
# (array([0, 1, 2, 3, 4], dtype=int64),)
np.where((nums > 3) & (nums < 6)) # 조건별로 괄호!
(array([3, 4], dtype=int64),)
3 초과 6 미만의 범위에 있는 수를 뽑기 위해서는 다음과 같이 3 초과, 6 미만의 조건을 &로 묶어서 사용을 하면 된다. 이때 주의할 점은 조건별로 소괄호를 통해 명확히 분리가 되어야 한다.
np.where() - OR 연산 (|)
이번에는 둘 중의 조건 중 하나만 부합해도 되는 OR 논리를 구현하고자 한다. 다른 것은 모두 동일하지만 & 대신 | 를 사용해주면 된다. ('|'은 원화 문자 키를 shift 하면 입력이 가능하다.)
[np.where((조건_1)|(조건_2))]
np.where(nums < 3)
# (array([0, 1], dtype=int64),)
np.where(nums > 8)
# (array([8, 9], dtype=int64),)
np.where((nums < 3) | (nums > 8)) # 조건별로 괄호!
# (array([0, 1, 8, 9], dtype=int64),)
이번에는 3 미만 8 초과 범위의 숫자를 획득하고자 한다. 이 때는 3 미만의 조건과 8 초과의 조건 중 하나라도 부합이 되는 숫자들을 획득하면 되기에 OR 논리를 사용하면 된다. 여기서도 마찬가지로 조건별로 소괄호는 필수이다.
728x90
반응형
'Python > Numpy' 카테고리의 다른 글
[Python] np.nan으로 nan 생성하기 (0) | 2023.02.01 |
---|---|
[Python] np.ones np.zeros - 1 혹은 0으로 이뤄진 배열 생성 (0) | 2022.10.04 |
[Python] np.unique() - 중복된 값들 중 고유한 값들만 반환하기 (0) | 2022.09.21 |
[Python] np.argmax, np.argmin - 넘파이 최댓값, 최솟값 인덱스 찾기 (0) | 2022.09.12 |
[Python] np.concatenate() - 넘파이 어레이 합치기 (0) | 2022.09.12 |
댓글