5일차) 넘파이 (5)

BinBin·2022년 1월 5일
1

머신러닝 공부

목록 보기
7/10
post-thumbnail

이번에는 특이한 인덱싱에 대해 공부해보겠습니다.

팬시 인덱싱(Fancy Indexing)

참고자료

처음에 보면 굉장히 이해하기 어려운 주제입니다.
위 자료에서는 팬시 인덱싱을 다음과 같이 정의하고 있습니다.

'여러 배열 요소에 한 번에 접근할 수 있도록 인덱스 배열을 전달하는 것을 의미한다.'

이 인덱싱이 특이한 점이 슬라이싱과 비슷하게 느껴지는데 직접 비교를 해보겠습니다.

슬라이싱

array1 = np.arange(start=1, stop=10)
array2 = array1.reshape(3, 3)

print(array2[0:2, 0:2])

이것을 실행하면 결과값으로는 [[1 2], [4 5]]가 출력이 됩니다. 이번엔 팬시 인덱싱을 사용해보겠습니다.

팬시 인덱싱

array1 = np.arange(start=1, stop=10)
array2 = array1.reshape(3, 3)

print(array2[[0, 1], 0:2])

이것도 결과값은 위와 같은 [[1 2], [4 5]]입니다.
여기서 row 부분은 보시면 슬라이싱과는 다르게 인덱싱을 두 가지를 했습니다.
바로 0과 1입니다.

따라서 결론적으로는 ((row = 0, col = 0), (row = 0, col = 1)), ((row = 1, col = 0),
(row = 1, col = 1))를 인덱싱 한 것 입니다.

코드를 잘 보면 row쪽 인덱싱이 [0, 1]이라는 또다른 배열을 넣은 것을 알 수 있습니다.

결론적으로 팬시 인덱싱이란 '한 배열로 다른 특정 배열'을 인덱싱 한 것입니다.

불린 인덱싱(Boolean indexing)

불린 인덱싱에 대해 공부하기 전, 먼저 알아야 할 것이 있는데 '불린'이라는 것이
무엇일까요?

불린(Boolean)이란 논리 자료형이라고도 불리며 참과 거짓을 나타낼 때 쓰입니다.
0과 1로 참거짓을 구분하는 경우가 있고 True와 False로 구분하는 경우가 있는데
파이썬의 경우는 후자에 해당합니다.

불린 인덱싱은 이름 그대로 참과 거짓으로 인덱싱을 하는 방식인데 어떤 식으로 이루어지는지 직접 보이도록 하겠습니다.

array1 = np.arange(start=1, stop=10)
array2 = array1[array1 > 3]
print(array2)
[4 5 6 7 8 9]

array1은 arange를 통해 [1, 2, 3, 4, 5, 6, 7, 8, 9]라는 ndarray를 생성하였고 array2에는 array1 > 3이라는 조건문을 넣었습니다.

array1의 원소중에서 3보다 큰 것이 어떤 것이 있을까요? 바로 4, 5, 6, 7, 8, 9입니다. 따라서 위 코드의 결과값도 조건문에 대한 True 값인 [4 5 6 7 8 9]를 반환한 것 입니다.

불린 인덱싱을 통해 원하는 조건들을 삽입해서 필터링을 쉽게 할 수 있어 나중에 요긴하게 쓰일 수 도 있습니다.

profile
빅데이터에 관심이 많은 대학생입니다

0개의 댓글