#인덱싱 & 슬라이싱..?
배열에 존재하는 특정 데이터는 인덱스를 통해 접근할 수 있다. 인덱싱을 통해 배열에 존재하는 데이터를 조회하는 것은 "배열명"[인덱스] 형태로 접근할 수 있다.
슬라이싱은 범위를 지정하여 데이터를 조회하는 방식이다.
"배열명"[from index : to index]
from index : 슬라이싱이 시작되는 인덱스 위치이다. 생략 가능하여 default값은 0이다.
to index : 슬라이싱이 종료되는 인덱스 위치이다. to index -1 위치의 데이터까지 조회되며 생략 가능하다.
default는 항상 해당 배열의 마지막 인덱스이다.
# 예시 코드
# 인덱싱, 슬라이싱 예시
import numpy as np
arr_1d = np.arange(5,15)
print("1D-array ::")
print(arr_1d)
print("arr_1d[3] = ",arr_1d[3])
arr_1d[3] = 78
print("changed 1D-array :: ",arr_1d )
#2d array indexing
arr_2d = np.arange(16).reshape(4,4)
print("\n2d-Array Indexing :: ")
print(arr_2d)
print("\narr_2d[2,3] = ", arr_2d[2,3])
arr_2d[2,3] = 0
print("changed 2D-array :: ",arr_2d )
#2d arrray slicing
print("\nSlicing :: ")
print(arr_2d[1:3,1:3])
arr_3d = np.arange(16).reshape(4,2,2)
print("\n3d-Array Indexing :: ")
print(arr_3d)
print("\narr_3d[2,1,1] = ", arr_3d[2,1,1])
arr_3d[2,1,1] = 0
print("changed 3D-array :: ",arr_3d )
#3d arrray slicing
print("\nSlicing :: ")
print(arr_3d[1:3,:,:])
1D-array ::
[ 5 6 7 8 9 10 11 12 13 14]
arr_1d[3] = 8
changed 1D-array :: [ 5 6 7 78 9 10 11 12 13 14]
2d-Array Indexing ::
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
arr_2d[2,3] = 11
changed 2D-array :: [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 0]
[12 13 14 15]]
Slicing ::
[[ 5 6]
[ 9 10]]
3d-Array Indexing ::
[[[ 0 1]
[ 2 3]]
[[ 4 5]
[ 6 7]]
[[ 8 9]
[10 11]]
[[12 13]
[14 15]]]
arr_3d[2,1,1] = 11
changed 3D-array :: [[[ 0 1]
[ 2 3]]
[[ 4 5]
[ 6 7]]
[[ 8 9]
[10 0]]
[[12 13]
[14 15]]]
Slicing ::
[[[ 4 5]
[ 6 7]]
[[ 8 9]
[10 0]]]
# Negative Index 활용
import numpy as np
#2d array indexing
arr_2d = np.arange(16).reshape(4,4)
print("\n2d-Array Indexing :: ")
print(arr_2d)
#Slicing by using Negative Index
print("\nSlicing by Negative Index ex1 :: ")
print(arr_2d[:,1:-1])
print("\nSlicing by Negative Index ex2 :: ")
print(arr_2d[-3:-1,1:-1])
print("\nSlicing by Negative Index ex3 :: ")
print(arr_2d[-1:-3,1:-1])
2d-Array Indexing ::
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
Slicing by Negative Index ex1 ::
[[ 1 2]
[ 5 6]
[ 9 10]
[13 14]]
Slicing by Negative Index ex2 ::
[[ 5 6]
[ 9 10]]
#결과를 보면 아무 요소도 존재하지 않는 것을 볼 수 있다. 그 이유는 python의 slicing 에서는
#from index값이 to index보다 작아야한다.(순서상..)
#따라서, ex3의 경우 invalid하기에 empty array가 출력되는 것이다.
Slicing by Negative Index ex3 ::
[]
'공부한 것들.. > Numpy' 카테고리의 다른 글
Numpy 데이터 정렬 (0) | 2024.09.12 |
---|---|
Numpy 집계 함수 (0) | 2024.09.12 |
Numpy 기본 연산 (0) | 2024.09.12 |
Numpy ndarray shape 변경 (0) | 2024.09.12 |
Numpy :: 데이터 타입 (0) | 2024.09.12 |