[NumPy] 인덱싱
넘파이 배열 인덱싱
넘파이 배열에서의 인덱싱은 다음 4가지 방법으로 이루어집니다.
- 단일 값 추출 : 특정한 위치의 데이터 선택
- 슬라이싱(Slicing) : 연속된 인덱스 위치의 데이터 선택
- 팬시 인덱싱(Fancy Indexing) : 인덱스 집합을 리스트형태로 지정하여 데이터 선택
- 불린 인덱싱(Boolean Indexing) : True/False 기반으로 True에 해당하는 인덱스 위치의 데이터 선택
이제 각각의 방법에 대해 자세히 알아보겠습니다.
1. 단일 값 추출
단일 값 추출은 넘파이 배열에서 특정한 위치의 데이터를 선택하는 방법입니다. 이때 대괄호([]) 안에 인덱스를 지정하여 데이터를 선택합니다. 예를 들어, 다음과 같이 1차원 배열에서 단일 값 추출을 수행할 수 있습니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[2]) # 3
위의 코드에서는 넘파이 배열에서 인덱스 2에 해당하는 데이터를 선택하고 있습니다. 실행 결과는 다음과 같습니다.
3
2. 슬라이싱(Slicing)
슬라이싱(Slicing)은 넘파이 배열에서 연속된 인덱스 위치의 데이터를 선택하는 방법입니다. 이때 대괄호([]) 안에 시작 인덱스와 끝 인덱스를 콜론(:)으로 구분하여 지정합니다. 예를 들어, 다음과 같이 1차원 배열에서 슬라이싱을 수행할 수 있습니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:4]) # [2 3 4]
위의 코드에서는 넘파이 배열에서 인덱스 1부터 인덱스 3까지의 데이터를 선택하고 있습니다. 실행 결과는 다음과 같습니다.
[2 3 4]
3. 팬시 인덱싱(Fancy Indexing)
팬시 인덱싱(Fancy Indexing)은 넘파이 배열에서 인덱스 집합을 리스트형태로 지정하여 데이터를 선택하는 방법입니다. 이때 대괄호([]) 안에 리스트로 구성된 인덱스를 지정합니다. 예를 들어, 다음과 같이 1차원 배열에서 팬시 인덱싱을 수행할 수 있습니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
idx = [0, 2, 4]
print(arr[idx]) # [1 3 5]
위의 코드에서는 넘파이 배열에서 인덱스 0, 2, 4에 해당하는 데이터를 선택하고 있습니다. 실행 결과는 다음과 같습니다.
[1 3 5]
4. 불린 인덱싱(Boolean Indexing)
불린 인덱싱(Boolean Indexing)은 넘파이 배열에서 True/False 기반으로 True에 해당하는 인덱스 위치의 데이터를 선택하는 방법입니다. 이때 대괄호([]) 안에 True/False 값을 가지는 넘파이 배열을 지정합니다. 예를 들어, 다음과 같이 1차원 배열에서 불린 인덱싱을 수행할 수 있습니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
mask = [True, False, True, False, True]
print(arr[mask]) # [1 3 5]
위의 코드에서는 넘파이 배열에서 인덱스 0, 2, 4에 해당하는 데이터를 선택하고 있습니다. 실행 결과는 다음과 같습니다.
[1 3 5]
결론
넘파이 배열에서의 인덱싱은 단일 값 추출, 슬라이싱, 팬시 인덱싱, 불린 인덱싱으로 이루어집니다. 이를 이용하여 다차원 배열을 다루면, 기존의 파이썬 리스트보다 더욱 효율적인 데이터 처리가 가능합니다.