준비하는 대학생

[NumPy] 인덱싱 본문

Programming/Machine learning

[NumPy] 인덱싱

Bangii 2023. 3. 13. 10:34

넘파이 배열 인덱싱

넘파이 배열에서의 인덱싱은 다음 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]

결론

 넘파이 배열에서의 인덱싱은 단일 값 추출, 슬라이싱, 팬시 인덱싱, 불린 인덱싱으로 이루어집니다. 이를 이용하여 다차원 배열을 다루면, 기존의 파이썬 리스트보다 더욱 효율적인 데이터 처리가 가능합니다.

'Programming > Machine learning' 카테고리의 다른 글

[NumPy] sort 정렬  (0) 2023.03.15
[NumPy] unique 함수  (0) 2023.03.14
[NumPy] reshape 함수  (0) 2023.03.13
[python] Numpy 기초 공부(zeros, ones, full)  (0) 2023.03.08
[python] Numpy 기초 지식 공부(arange, linspace)  (2) 2023.03.07
Comments