티스토리 뷰

반응형

이번 포스팅은 numpy의 boolean index, fancy index에 대해 정리글 입니다.

아래 참고 사이트 목록의 유튜브 영상을 참조하여 남깁니다.

1. boolean index

numpy는 배열은 특정 조건에 따른 값을 배열 형태로 추출 할 수 있습니다.

비교 연산 함수 들도 모두 사용이 가능합니다.

import numpy as np;
test_array = np.array([1,4,0,2,3,8,9,7], float)
# 조건에 맞으면 ture, 틀리면 false의 배열을 출력
test_array > 3

# 조건이 true인 index의 element만 추출
test_array[test_array>3]

# 조건에 맞는것만 추출한다.
condition = test_array<3
print(test_array[condition])

A = np.array([
[23,25,28,28,23,25],
[22,29,27,28,21,25],
[29,24,25,28,21,25],
[28,25,27,24,22,25],
[21,23,24,28,23,25]
])
# boolean index로 배열 출력
B = A > 25
B

# 0,1로 변환된다.
B.astype(np.int)

2. fancy index

fancy index는 array를 index value를 사용해서 값을 추출하는 방법입니다.

a=np.array([2,4,6,8,9, float])
b=np.array([0,0,3,1,2,4], int) # 반드시 integer로 선언
# b배열의 값을 index로 하여 a의 배열 값들을 출력한다.
a[b]

# 동일 동작을 한다.
a.take(b)

a[b]와 a.take(b)는 동일한 동작으로 이해하기 쉬운 코드로 작성하면 됩니다.

a.take(b)가 직관적으로 이해하기 쉽기 때문에 a.take(b)를 추천합니다.

a = np.array([[1,4],[6,8]], int)
b = np.array([0,0,1,1,0], int)
c = np.array([0,1,1,1,1],int)
# 매트릭스 형태로도 가능하다.
a[b,c]

# 로우로 불러오기도 가능.
a[b]

매트릭스 형태는 잘 사용되지 않지만 알아두면 좋습니다.

 

참고 사이트

 

https://www.youtube.com/watch?v=A2BT1sWKaUE&list=PLBHVuYlKEkULZLnKLzRq1CnNBOBlBTkqp&index=9

 

반응형
댓글