반응형
bool 인덱싱
목표
관계 연산자를 통해 얻은 bool 요소로 이루어진 배열을 인덱스로 사용하여 배열에서 특정값들을 추출해보겠습니다.
bool 인덱싱
우리는 Numpy의 특별한 관계 연산을 이용하여 다음과 같이 bool 요소
로 이루어진 배열을 만들 수 있습니다.
import numpy as np
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
print(A >= 4)
[False False False True True True False False False]
이제 해당 bool 배열을 인덱스로 사용하여 특정 요소들을 추출해봅시다.
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
B = (A >= 4)
print(B)
print(A[B])
[False False False True True True False False False]
[4 5 4]
A에서 관계 연산자를 통해 4 이상의 요소는 True, 4 미만의 요소는 False인 bool 배열 B를 생성합니다. 그리고 B를 A의 인덱스로 넣어준다면 True인 요소들(4, 5, 4)만 추출합니다.
만약 여러분들이 특정 구간의 해당하는 요소 값들을 변경하고 싶다면 다음과 같이 작성할 수도 있습니다.
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
A[(A > 1) & (A <= 3)] = 0
print(A)
[1 0 0 4 5 4 0 0 1]
관계 연산자를 통해 1 초과 및 3 이하의 요소는 True, 1 이하 또는 3 초과의 요소는 False인 bool 배열을 A에 인덱스로 넣어주었습니다. 그리고 bool 배열 내 True 요소와 동일한 위치에 있는 A 내 요소의 값들을 0으로 변경했습니다.
import numpy as np
np.random.seed(42)
arr = np.random.randint(0, 100, size=(5, 6, 3))
# arr에서 10보다 크고 20보다 작거나 같은 요소들만 추출해봅시다.
result = arr[(arr>10)&(arr <= 20)]
print(result)
[14 20 20 14 20 17 13 17 13 14]
'AI_Bootcamp' 카테고리의 다른 글
Numpy 심화 실습 chap3 브로드캐스팅 (0) | 2022.01.20 |
---|---|
3주차 Day14 Numpy 실습 IV (0) | 2022.01.20 |
Numpy 심화 실습 chap 1 matmul()와 dot()의 차이 (0) | 2022.01.19 |
3주차 Day13 Numpy 실습 III (0) | 2022.01.19 |
AWS를 활용한 인공지능 모델 배포 chap1 (1) | 2022.01.18 |