본문 바로가기
Python/Build setting

[Numpy]indexing(boolean indexing, fancy indexing)

by 소소한 혜밍씨 2022. 8. 29.

앞서 포스팅했던 indexing은 여러 형태의 indexing이 있다.

 

이번 포스팅에서는 boolean indexing과 fancy indexing을 포스팅하고자한다.

 

boolean indexing

 

먼저, bool 자료형은 참(True)과 거짓(False)을 나타내는 자료형으로서 아래와 같은 2가지의 값만을 가진다.

  • True - 참
  • False - 거짓

처음 보면 이게 뭐야 하면서 개념이 쉬우면서 이해가 안되기도 하지만

 

간단하게  bool 내장 함수를 사용하면 자료형의 참과 거짓을 식별할 수 있다.

 

맞으면 참(true), 틀리면 거짓(false) 인 것이다.

 

 

c = np.arange(24).reshape(2,3,4)

print(c)
print(c.shape)



# 출력
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
  
(2, 3, 4)

 

1부터 23까지의 c 배열을 2행 4열의 3차원 형태로 reshape 하였다.

 

boolean indexing을 사용하여 원하는 부분만 가져와보자.

 

# boolean indexing
bool_idx = (c > 10)

print(bool_idx)



# 출력
[[[False False False False]
  [False False False False]
  [False False False  True]]

 [[ True  True  True  True]
  [ True  True  True  True]
  [ True  True  True  True]]]

 

 배열 c 내에서 10 초과인 값을 boolean indexing으로 불러왔고

 

그 결과, 10 초과인 값은 True, 10 이하인 값은 False 로 똑같은 형태를 유지한 채 출력이 된 것을 확인할 수 있다.

 

여기서 똑같은 형태는 기존 shape을 유지했다는 정도로 이해하면 될 것 같다.

 

 

 

 

 

fancy indexing

 

 정수 인덱싱이라고도 하며 다른 형태의 넘파이 배열로 배열자체를 인덱싱 할 수 있는 기능을 말한다.

 

 

댓글