본문 바로가기
2학년 2학기/데이터 사이언스 입문

Fancy Indexing

by print_soo 2024. 10. 5.

Fancy Indexing이란?

: 주어진 배열 내에 여러 요소들에 대한 접근을 한번에할 수 있도록 해주는 방법이다.

 

 

 

 

 

[기존의 방식]

 

 

 

 

[Fancy Indexing]

 

 

이렇게 인덱스를 만들고 그 인덱스를 x의 인덱스에 넣어서 필요한 값만 가져오는 방식이다.

 


다차원에서의 Fancy Indexing

 

 

이렇게 배열 형태로 인덱스에 넣으면 배열 형태 그대로 배열의 요소들을 인덱싱해서 출력이 된다.

 

 

 

다차원에서의 Fancy Indexing - row, col

 

 

row의 요소 인덱스와 col의 요소 인덱스를 같이 인덱스로 넣을 수 있다.

 


차원이 다른 index인 경우 - 브로드캐스팅

np.newaxis이란?

 

NumPy에서 배열의 차원을 확장하는 데 사용하는 도구이다. 즉, 1차원 배열을 2차원 배열로, 2차원 배열을 3차원 배열로 변경하는 것이다.

 

[1, 2, 3]을 [[1] [2] [3]] 형태로 변경해주는 것이다.

 

 

 

 

위의 방식처럼 3x1의 row와 1x3 col을 인덱스로 넣으면 브로드 캐스팅이 발생해서 [설명]과 같이 인덱싱이 일어난다.

 

 

 

 

아래의 방식들도 브로드캐스팅을 통해서 인덱싱이 진행된 결과들이다.

 


 

Fancy Indexing에 Masking 적용하기

 

 

x[row[:, np.newaxis], mask]를 설명하면 모든 행에서 0열 2열을 출력하는 것이다.

 


Fancy Indexing을 통한 값 변경하기

 

 

 

 

 

 

 

 

주의할 점은 팬시 인덱싱을 통해서 값 변경시 인덱스가 중복된다면 마지막 인덱스에 할당된 연산만 적용된다!

'2학년 2학기 > 데이터 사이언스 입문' 카테고리의 다른 글

Sorting  (0) 2024.10.05
Axis  (0) 2024.10.05
비교, 마스크, Bool 연산  (0) 2024.10.05
Numpy - 브로드캐스팅  (0) 2024.09.26
Numpy - Ufunc  (1) 2024.09.26