배열 슬라이싱
파이썬 리스트와 유사하게 Numpy 배열도 슬라이싱이 가능하다.
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
b = a[:2, 1:3]
print(b)
#[[2 3]
#[6 7]]
Numpy배열의 경우 다차원인 경우가 많기 때문에 어떻게 슬라이싱 할지 명확하게 해야한다.
print(a[0, 1]) #2
b[0, 0] = 77 #b의 [0, 0]은 a의 [0, 1]
print(a)
#[[ 1 77 3 4]
#[ 5 6 7 8]
#[ 9 10 11 12]]
Numpy배열의 슬라이싱은 리스트와 달리 새로운 배열을 생성하지 않는다. 기존 배열에 대한 새로운 View를 제공할 뿐이다.
따라서 위의 예시와 같이 슬라이스 된 배열의 값을 수정하면 원래 배열의 값도 수정된다.
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
row_r1 = a[1, :]
row_r2 = a[1:2, :]
print(row_r1, row_r1.shape)
#[5 6 7 8] (4,)
print(row_r2, row_r2.shape)
#[[5 6 7 8]] (1, 4)
1행만 뽑아내더라도 row_r2와 같이 구간으로 뽑으면 차원이 보존되는데 그 차원의 길이가 1이 되고,
row_r1과 같이 1행만 뽑을 경우 차원이 줄어 2차원이 1차원이 된다,
shape을 보면 알수있다, row_r1은 길이가 4인 1차원배열, row_r2는 1*4인 2차원배열
'개발 타임캡슐 > Python' 카테고리의 다른 글
[Python] Numpy - 배열 인덱싱(Array Indexing) (0) | 2020.09.19 |
---|---|
[Python] Numpy - 배열 합치기 (0) | 2020.09.19 |
[Python] Numpy - 배열 reshape (0) | 2020.09.18 |
[Python] Numpy 배열 / Numpy배열 함수 (0) | 2020.09.18 |
[Python] 2진수 8진수 16진수 -> 10진수 -> 2진수 8진수 16진수 (0) | 2020.09.07 |