DevSSOM
파이썬 Numpy - 배열의 인덱싱과 슬라이싱 본문
반응형
인덱싱과 슬라이싱 : 각각 찾고, 잘라내는 것
인덱싱 (Indexing)
: 인덱스로 값을 찾아내는 것.
import numpy as np
x = np.arange(7)
print(x) # [0 1 2 3 4 5 6]
print(x[3]) # 3
print(x[7]) # IndexError : index 7 is out of bounds
x[0] = 10
print(x) # [10 1 2 3 4 5 6]
import numpy as np
x = np.arange(1, 13, 1) # 1부터 12까지, 1씩 증가하는 배열
x.shape = 3, 4
print(x)
# [[ 1 2 3 4]
# [ 5 6 7 8]
# [ 9 10 11 12]]
print(x[2, 3]) # 12
슬라이싱 (Slicing)
: 인덱스의 값으로 배열의 일부분을 가져오는 것.
import numpy as np
x = np.arange(7)
print(x) # [0 1 2 3 4 5 6]
print(x[1:4]) # [1 2 3]
print(x[1:]) # [1 2 3 4 5 6]
print(x[:4]) # [0 1 2 3]
print(x[::2]) # [0 2 4 6]
import numpy as np
x = np.arange(1, 13, 1).reshape(3, 4)
print(x)
# [[ 1 2 3 4]
# [ 5 6 7 8]
# [ 9 10 11 12]]
print(x[1:2,:2:3])
# [[5]]
print(x[1:,:2])
# [[ 5 6]
# [ 9 10]]
인덱싱 x 슬라이싱 조합
원하는 요소를 지정하기 위해 인덱싱과 슬라이싱을 적절하게 조합해서 사용할 수 있음.
import numpy as np
x = np.arange(1, 13, 1).reshape(3, 4)
print(x)
# [[ 1 2 3 4]
# [ 5 6 7 8]
# [ 9 10 11 12]]
print(x[1:2, 2])
# [7]
print(x[[0,2], 2])
# [ 3 11]
print(x[[0,2], :2])
# [[ 1 2]
# [ 9 10]]
불리언 인덱싱 (Boolean Indexing)
: 배열의 각 요소의 선택 여부를 불리언 마스크를 이용해서 지정하는 방식. 쉽게 말해자면, 먼저 조건에 맞는 데이터를 가져오고, 참인지 거짓인지 알려줌.
import numpy as np
x = np.arange(7)
# Boolean mask? True, False로 구성된 mask array
print(x) # [0 1 2 3 4 5 6]
print(x < 3) # [True True True False False False False]
print(x > 7) # [False False False False False False False]
# Boolean mask의 True 요소에 해당하는 인덱스만 조회
print(x[x < 3]) # [0 1 2]
print(x[x % 2 == 0]) # [0 2 4 6]
팬시 인덱싱 (Fancy Indexing)
: 배열의 각 요소 선택을 인덱스 배열을 전달해서 지정하는 방식. 찾고싶은 자리 = 인덱스에 어떤 값이 있는지.
import numpy as np
x = np.arange(7)
print(x) # [0 1 2 3 4 5 6]
print(x[[1, 3, 5]]) # [1 3 5]
import numpy as np
x = np.arange(1, 13, 1).reshape(3, 4)
print(x)
# [[ 1 2 3 4]
# [ 5 6 7 8]
# [ 9 10 11 12]]
print(x[[0, 2]])
# [[ 1 2 3 4]
# [ 9 10 11 12]]
연습문제
import numpy as np
matrix = np.arange(1, 13, 1).reshape(3, 4)
print(matrix)
# [[ 1 2 3 4]
# [ 5 6 7 8]
# [ 9 10 11 12]]
# 1. Indexing을 통해 값 2를 출력해보세요.
answer1 = matrix[0, 1]
print(answer1) # 2
# 2. Slicing을 통해 매트릭스 일부인 9, 10을 가져와 출력해보세요.
answer2 = matrix[2, :2]
print(answer2) # [ 9 10]
# 3. Boolean indexing을 통해 5보다 작은 수를 찾아 출력해보세요.
answer3 = matrix[matrix < 5]
print(answer3) # [1 2 3 4]
# 4. Fancy indexing을 통해 두 번째 행만 추출하여 출력해보세요.
answer4 = matrix[[1]]
print(answer4) # [[5 6 7 8]]
728x90
반응형
'Python > 기초' 카테고리의 다른 글
파이썬 pandas - 데이터프레임의 데이터 선택, 추가, 수정하기 (0) | 2021.07.26 |
---|---|
파이썬 pandas - 데이터프레임 (1) | 2021.07.26 |
파이썬 pandas - Series 데이터 (0) | 2021.07.26 |
파이썬 Numpy - 배열의 기초 (0) | 2021.07.26 |
파이썬 Numpy - 개념 (0) | 2021.07.24 |
파이썬 기초 - 객체지향 프로그래밍 (1) | 2021.06.10 |
파이썬 기초 - 반복문 (for문, for-range문, while문, break문) (0) | 2021.06.09 |
댓글