NumPy Boolean Indexing과 Fancy Indexing

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


Boolean Indexing?

배열에 조건을 걸어 True/False로 이루어진 배열을 반환

a = np.array([15, 0, 25, 8, 0, 40, 3, 12, 50, 0])

low_a = a < 10
low_a  # > array([False,  True, False,  True,  True, False,  True, False, False, True])

이때 다양한 연산도 가능하다.

a = np.array([15, 0, 25, 8, 0, 40, 3, 12, 50, 0])

(a >= 10 )&(a < 30)  #  > array([ True, False,  True, False, False, False, False,  True, False, False])

(stock >= 10 )|(stock < 30)  # > array([ True,  True,  True,  True,  True,  True,  True,  True,  True, True])

Fancy Indexing

인덱스가 담긴 배열을 사용해 원하는 위치의 원소들을 순서에 상관없이 추출

a = np.array([580, 220, 180, 150, 130, 160, 110, 450])
a_index = [0, 1, 7]

a_fancy = a[a_index]  # > array([580, 220, 450])

where

추가로 공부하다가 where 함수랑 boolean indexing 개념이 살짝 헷갈려서 정리해본다.

where은 조건에 부합하는 인덱스를 반환해주는 함수이다. 예시를 들자면

a = np.arange(5,15)
# array([5,6,7,8,9,10,11,12,13,14])

np.where(a > 10) 
# 11~14까지의 인덱스를 반환
# array([6,7,8,9]) > 인덱스를 반환해준거임!!

boolean indexing은 말그대로 boolean 값을 반환해주는 함수이다. 내가 어떤 조건을 걸면 그 조건에 만족하는 지 안하는 지에 대한 boolean 값을 반환해주는 것!

where은 조건에 부합하는 결과의 인덱스 값 반환!!