NumPy 배열의 일부를 선택하는 방법은 매우 풍부합니다.
일반 리스트 인덱싱을 확장한 형태로, 데이터 분석에서 거의 매일 씁니다.
기본 인덱싱.
arr[0] — 첫 요소.
arr[-1] — 마지막.
arr[1:4] — 슬라이싱.
2차원에서는 arr[0, 1] — 0행 1열.
arr[0]은 0행 전체, arr[:, 0]은 0열 전체.
팬시 인덱싱.
arr[[0, 2, 4]] — 인덱스 0, 2, 4의 요소들.
arr[[0,1], [1,2]] — (0,1)과 (1,2) 위치.
「복수 인덱스로 한 번에 선택」하는 강력한 도구.
불리언 인덱싱.
mask = arr > 5; arr[mask] — 5 초과인 요소들만.
arr[arr > 5] — 한 줄로 같은 일.
SQL의 WHERE 절과 비슷한 효과로, 데이터 필터링에 필수.
주의: 슬라이싱은 「뷰(view)」 — 원본을 가리킴.
arr2 = arr[1:4]; arr2[0] = 999 — arr도 변경됨.
깊은 복사가 필요하면 arr[1:4].copy().
팬시·불리언 인덱싱은 「복사」 — 원본 변경 안 됨.
이 미묘한 차이가 데이터 분석에서 중요한 함정입니다.
한 줄 요약
NumPy 인덱싱은 기본([i,j])·팬시([0,2,4])·불리언(arr>5)으로 구성됩니다.
슬라이싱은 뷰(원본 공유), 팬시·불리언은 복사라는 차이가 중요합니다.
더 알아볼 것
- 뷰 vs 복사 — 함정과 진단
- np.where — 조건 인덱싱 함수
- 2차원 인덱싱의 axis 개념