머신러닝 Machine Learning

Indexing 데이터셋 선택

디지털농담곰 2023. 12. 20. 13:33

 

Indexing 데이터셋 선택

ndarray에 담긴 데이터 중 일부 데이터 세트나 특정 데이터만 추출하는 방법에 대해서 알아보겠습니다.

 

1. 슬라이싱(Slicing): 슬라이싱은 파이썬에서 리스트, 튜플, 문자열과 같은 순차적인 데이터에서 특정 부분을 선택하는 방법입니다. 

 

시퀀스[start:stop:step]

start: 슬라이스의 시작 인덱스로, 이 인덱스에 해당하는 요소가 포함됩니다. 

stop: 슬라이스의 끝 인덱스로, 이 인덱스에 해당하는 요소는 포함되지 않습니다. 

step (선택적): 슬라이스에서 요소를 건너뛰는 간격을 나타냅니다.

 

< 예시1 >

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

sliced_list = my_list[2:6] 

print(sliced_list)  

⇒[2, 3, 4, 5] 

 

< 예시2 >

sliced_list_with_step = my_list[:8:2] 

print(sliced_list_with_step)  

⇒ [0, 2, 4, 6]

 

< 예시3 >

array1d = np.arange(1, 10)

array2d = array1d.reshape(3, 3)

 

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

[[1 2]

 [4 5]]

 

print(array2d[1:3, 0:3])

[[4 5 6]

 [7 8 9]]

 

print(array2d[1:3, :])

[[4 5 6]

 [7 8 9]]

 

print(array2d[:, :])

[[1 2 3]

 [4 5 6]

 [7 8 9]]

 

print(array2d[:2, 1:])

[[2 3]

 [5 6]]

 

print(array2d[:2,0])

[1 4]

 

 

2. 팬시 인덱싱(Fancy Indexing): 팬시 인덱싱(Fancy Indexing)은 NumPy에서 제공하는 고급 인덱싱 기법 중 하나로, 배열을 인덱싱하는데 배열이나 리스트와 같은 다른 배열을 사용하는 방법을 말합니다. 이를 통해 여러 개의 요소를 한 번에 선택하거나 원하는 순서로 배열의 요소를 추출할 수 있습니다.

 

array1d = np.arange(1, 10)

array2d = array1d.reshape(3, 3)

 

array3 = array2d[[0, 1], 2]

print(array3.tolist())

⇒ [3, 6]

 

array4 = array2d[[0, 1], 0:2]

print(array4.tolist())

[[1, 2], [4, 5]]

 

array5 = array2d[[0, 1]]

print(array5.tolist())

[[1, 2, 3], [4, 5, 6]]

 

 

3. 불린 인덱싱(boolean indexing): 불린 인덱싱(Boolean indexing)은 조건 필터링과 검색을 동시에 할 수 있기 때문에 매우 자주 사용되 는 인덱싱 방식입니다. 1차원 ndarray [1,2,3,4,5,6,7,8,9]에서 데이터값이 5보다 큰 데이터만 추출하 려면 어떻게 하면 될까요? 아마 for loop를 돌면서 값을 하나씩 if '추출값' 〉 5 비교를 통해서 해당하 는 데이터만 추출해야 할 것입니다. 불린 인덱싱을 이용하면 for loop/if else 문보다 훨씬 간단하게 이 를 구현할 수 있습니다. 불린 인덱싱은 ndarray의 인덱스를 지정하는 [] 내에 조건문을 그대로 기재하기만 하면 됩니다. 다음 예제에서 불린 인덱싱을 바로 적용해 보도록 하겠습니다.

 

array1d = np.arange(1, 10)

array3 = array1d[array1d > 5]

print(array3)

⇒ [6 7 8 9]



ndarray객채의 데이터셋에서 여러 방법으로 값을 추출하는 방법에 대해서 알아보았습니다.

 

감사합니다. 

 

'머신러닝 Machine Learning' 카테고리의 다른 글

Reshape 차원과 크기 변경  (1) 2023.12.15
ndarray 데이터 타입  (0) 2023.12.12
Numpy 넘파이  (0) 2023.12.10