Notice
Recent Posts
Recent Comments
Link
초보 개발자의 일기
NumPy - ndarray의 데이터 세트 선택하기 본문
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