본문 바로가기
Python/python 기초

Numpy 배열의 인덱스가 불리언이면

by 철이88 2023. 4. 24.
반응형

np.array 배열의 인덱스로 불리언 값(True, False)을 사용하면 True에 해당하는 원소만 선택하여 작업할 수 있습니다. 이번 포스팅은 배열의 인덱스가 불리언인 경우를 예를 통해서 알아보겠습니다.

먼저, 아래와 같이 정수로 이뤄진 배열가 있다고 가정해 보겠습니다.

x = np.array([1, 2, 3, 4, 5])

 

이제, 각 원소가 3보다 큰지를 판단한 불리언 리스트를 만들어 보겠습니다 (즉, x > 3 인지).

결과가 mask = [False, False, False, True, True]이 돼야 하는데, 아래와 같이 판단을 하는 코드를 만들 수 있습니다.

import numpy as np

mask = [] # 빈 리스트 생성
x = np.array([1,2,3,4,5])
for i in range(len(x)): #반복문, i는 인덱스 0, 1, ..., 4
    mask.append(x[i] > 3) # x의 원소들이 3보다 큰지의 불리언 값을 추가하기
print(mask) # [False, False, False, True, True] 출력


이제 배열 x에 불리언 인덱싱을 적용하였을 때 어떻게 되는지 보겠습니다.

위 코드를 약간 수정하면

import numpy as np

mask = [] # 빈 리스트 생성
x = np.array([1,2,3,4,5])
for i in range(len(x)): #반복문, i는 인덱스 0, 1, ..., 4
    mask.append(x[i] > 3) # x의 원소들이 3보다 큰지의 불리언 값을 추가하기

result = x[mask] # mask가 True인 x 원소만 배열 result에 저장
print(result) # [4 5] 출력

여기서 result = x[mask]에서 배열의 인덱스로 불리언을 취하는 것을 볼 수 있습니다.

이 문장에서는 리스트 mask의 True값이 대응하는 x의 원소가 result에 저장되게 됩니다.

 

반응형

댓글