Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total



GitHub Contribution
Loading data ...
관리 메뉴

초보 개발자의 일기

NumPy - ndarray의 데이터 세트 선택하기 본문

소소한 공부 일기/데이터 분석

NumPy - ndarray의 데이터 세트 선택하기

Da다 2021. 5. 4. 23:48

ndarray에서 특정 위치의 값을 추출하는 방법이다.

인덱싱 Indexing

특정 위치의 단일값을 추출한다.

# 예시를 들기 위해 1에서 부터 9 까지의 1차원 ndarray 생성 
array1 = np.arange(start=1, stop=10)  # 10 포함 안함
print('array1:',array1)
array1: [1 2 3 4 5 6 7 8 9]

index는 0부터 시작한다. 아래 코드의 array1[2]는 3번째 index위치의 데이터 값을 의미한다.

value = array1[2] 
print('value:',value)
print(type(value))
value: 3
<class 'numpy.int32'>

맨 뒤를 기준으로도 indexing이 가능하다.

print('맨 뒤의 값:', array1[-1], ', 맨 뒤에서 두번째 값:', array1[-2])
맨 뒤의 값: 9 , 맨 뒤에서 두번째 값: 8

2차원 Indexing

array1d = np.arange(start=1, stop=10)	# 예시를 들기 위해 array 생성
array2d = array1d.reshape(3, 3)

print(array2d)
[[1 2 3]
    [4 5 6]
    [7 8 9]]

예시

print('(row=0,col=0) index 가리키는 값:', array2d[0, 0] )
print('(row=0,col=1) index 가리키는 값:', array2d[0, 1] )
print('(row=1,col=0) index 가리키는 값:', array2d[1, 0] )
print('(row=2,col=2) index 가리키는 값:', array2d[2, 2] )
(row=0,col=0) index 가리키는 값: 1
(row=0,col=1) index 가리키는 값: 2
(row=1,col=0) index 가리키는 값: 4
(row=2,col=2) index 가리키는 값: 9

슬라이싱 Slicing

연속적인 데이터를 가져온다.

array1 = np.arange(start=1, stop=10)	# 예시를 위한 array 생성
print(array1)
[1 2 3 4 5 6 7 8 9]

0번째부터 2번째까지 추출

array3 = array1[0:3]	
# 시작은 0번 인덱스, 끝은 3번 인덱스이다. 이 경우 3번 인덱스 이전의 값까지 출력한다.

print(type(array3))
print(array3)
<class 'numpy.ndarray'>
[1 2 3]

처음부터 5번째 인덱스 이전까지 출력한다.

print(array1[:5])
[1 2 3 4 5]

4번째 인덱스부터 끝까지 출력한다.

print(array1[4:])
[5 6 7 8 9]

처음부터 끝까지 출력한다.

print(array1[:])
[1 2 3 4 5 6 7 8 9]

2개 간격으로 출력한다.

print(array1[::2])
[1 3 5 7 9]

2차원 Slicing

array1d = np.arange(start=1, stop=10)	# 예시용 array 생성
array1d
print()
array2d = array1d.reshape(3,3)
array2d
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

array([[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]])

예시

print('array2d[0:2, 0:2] \n', array2d[0:2, 0:2])
print('array2d[1:3, 0:3] \n', array2d[1:3, 0:3])
print('array2d[1:3, :] \n', array2d[1:3, :])
print('array2d[:, :] \n', array2d[:, :])
print('array2d[:2, 1:] \n', array2d[:2, 1:])
print('array2d[:2, 0] \n', array2d[:2, 0])  # 앞은 행, 뒤는 열 가져오기
array2d[0:2, 0:2]
[[1 2]
[4 5]]
array2d[1:3, 0:3]
[[4 5 6]
[7 8 9]]
array2d[1:3, :]
[[4 5 6]
[7 8 9]]
array2d[:, :]
[[1 2 3]
[4 5 6]
[7 8 9]]
array2d[:2, 1:]
[[2 3]
[5 6]]
array2d[:2, 0]
[1 4]

팬시 인덱싱 Fancy Indexing

비연속적인 데이터 인덱싱이다.

array1d = np.arange(start=1, stop=10)	# 예시용 array 생성
array2d = array1d.reshape(3, 3)
print(array2d)
[[1 2 3]
    [4 5 6]
    [7 8 9]]

0번째, 1번째 행의 2번째 위치의 값을 추출한다.

array3 = array2d[[0, 1], 2]
array3
array([3, 6])

0번째, 2번째 행의 0부터 1번째 위치의 값을 추출한다.

array4 = array2d[[0,2], 0:2]
array4
array([[1, 2],
          [7, 8]])

0번째, 1번째 행을 추출한다.

array5 = array2d[[0, 1]]
array50
array([[1, 2, 3],
          [4, 5, 6]])

불린 인덱싱 Boolean Indexing

어떤 조건에 해당하는 값만을 출력할 때 사용한다.

array1d = np.arange(start=1, stop=10)	# 예시용 array 생성
print(array1d)
[1 2 3 4 5 6 7 8 9]
array1 = np.arange(start=10, stop=100, step =10)
print(array1)
print(type(array1))
[10 20 30 40 50 60 70 80 90] <class 'numpy.ndarray'>

일반 인덱스로 필터링할 경우 과정이 복잡하지만, 불린 인덱싱을 이용하면 편리하다.

array2 = array1[array1>50]  # 값
print(array2)
[60 70 80 90]
print(array1d[array1>50])   # 인덱스
[6 7 8 9]

 

 

※ 이지북스의 파이썬 머신러닝 완벽 가이드를 바탕으로 한 학습 기록입니다 ※

'소소한 공부 일기 > 데이터 분석' 카테고리의 다른 글

Pandas - Object creation  (0) 2021.05.05
NumPy - 선형대수 연산  (0) 2021.05.05
NumPy - ndarray의 정렬  (0) 2021.05.05
NumPy - ndarray 생성, reshape()  (0) 2021.05.04
NumPy - ndarray 개요  (0) 2021.05.03
Comments