Studio KimHippo :D
[Python / NumPy] 3. NumPy 배열 인덱싱, 슬라이싱 본문
import numpy as np
x = np.arange(10)
np.random.seed(0)
x1 = np.random.randint(10, size = 6)
x2 = np.random.randint(10, size = (3, 4))
x3 = np.random.randint(10, size = (3, 4, 5))
# NOTE : 배열변수[start, stop, step]
print(x[:5],'\n', x[5:],'\n', x[4:7],'\n', x[::2],'\n', x[1::2],'\n')
print(x[5::-2])
Out [1] : [0 1 2 3 4]
Out [2] : [5 6 7 8 9]
Out [3] : [4 5 6]
Out [4] : [0 2 4 6 8]
Out [5] : [1 3 5 7 9]
Out [6] : [5 3 1]
# NOTE : 역순정렬
print(x[::-1], '\n')
# NOTE : 2개의 행, 3개의 열
x2[:2, :3]
# NOTE : 모든 행, 한 열 걸러 하나씩
x2[:3, ::2]
# NOTE : 역순정렬
x2[::-1, ::-1]
# NOTE : x2의 첫 번째 열
x2[:, 0]
# NOTE : x2의 첫 번째 행
x2[0, :]
# NOTE : x2[0, :]과 동일
print(x2[0])
Out [1] : [9 8 7 6 5 4 3 2 1 0]
Out [2] : array([[12, 5, 2], [ 7, 6, 8]])
Out [3] : array([[12, 2], [ 7, 8], [ 1, 7]])
Out [4] : array([[ 7, 7, 6, 1], [ 8, 8, 6, 7], [ 4, 2, 5, 12]])
Out [5] : array([12, 5, 2, 4])
Out [6] : [12 5 2 4]
# NOTE : numpy에서의 배열 슬라이스는 사본(copy)이 아니라 뷰(view)이다.
x2_sub = x2[:2, :2]
print(x2_sub)
x2_sub[0, 0] = 99
print(x2_sub)
print(x2)
Out [1] : [[12 5] [ 7 6]]
Out [2] : [[99 5] [ 7 6]]
Out [3] : [[99 5 2 4] [ 7 6 8 8] [ 1 6 7 7]]
# NOTE : 배열의 사본 만들기
x2_sub_copy = x2[:2, :2].copy()
print(x2_sub_copy)
x2_sub_copy[0, 0] = 42
print(x2_sub_copy)
print(x2)
Out [1] : [[99 5] [ 7 6]]
Out [2] : [[42 5] [ 7 6]]
Out [3] : [[99 5 2 4] [ 7 6 8 8] [ 1 6 7 7]]
참고
O'REILLY 제이크 밴더플래스 저/ 위키북스 김정인 역 - 파이썬 데이터 사이언스 핸드북
'Python Study > NumPy' 카테고리의 다른 글
[Python / NumPy] 6. 브로드 캐스팅 (0) | 2019.07.08 |
---|---|
[Python / NumPy] 5. NumPy ufunction (0) | 2019.07.08 |
[Python /NumPy] 4. 배열의 재구조화, 병합, 분할 (0) | 2019.07.07 |
[Python / NumPy] 2. NumPy 배열 속성 (0) | 2019.07.07 |
[Python / NumPy] 1. NumPy를 활용한 여러 배열 만들기 (0) | 2019.07.07 |
Comments