image.png

인덱싱이랑 배열의 특정 요소에 접근하는것을 의미합니다. 위 사진처럼 배열 특정 요소에 접근하기 위해서 a[0], a[1]로 접근하게 됩니다.

image.png

반대로 배열의 특정 부분만 부분집합으로 뽑아서 사용 하고 싶을수도 있습니다. 이를 배열의 슬라이싱이라고 합니다. 개념을 대충 이해 하셨다면 이번시간은 NumPy에서 배열의 인덱싱과 슬라이싱에 대해 배워보도록 하겠습니다.

인덱싱

1D 배열 인덱싱

arr = np.array([10, 20, 30, 40, 50])

print(arr[0])   # 10 - 첫 번째 요소
print(arr[2])   # 30 - 세 번째 요소
print(arr[-1])  # 50 - 마지막 요소
print(arr[-2])  # 40 - 뒤에서 두 번째

# 값 변경
arr[0] = 99
print(arr)  # [99, 20, 30, 40, 50]

2D 배열 인덱싱

image = np.array([
    [10, 20, 30, 40],
    [50, 60, 70, 80],
    [90, 100, 110, 120]
])

# 단일 요소 접근: [행, 열]
pixel = image[1, 2]  # 2번째 행, 3번째 열
print(f"image[1, 2] = {pixel}")  # 70

# 행 전체 선택
first_row = image[0, :]  # 또는 image[0]
print(f"First row: {first_row}")  # [10, 20, 30, 40]

# 열 전체 선택
second_col = image[:, 1]
print(f"Second column: {second_col}")  # [20, 60, 100]

배열의 첫번째 인덱스는 0입니다.

슬라이싱

배열의 일부 영역을 추출하는것을 슬라이싱이라고 합니다.

arr = np.arange(10)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(arr[2:5])    # [2, 3, 4] - 인덱스 2~4
print(arr[:3])     # [0, 1, 2] - 처음부터 인덱스 2까지
print(arr[5:])     # [5, 6, 7, 8, 9] - 인덱스 5부터 끝까지
print(arr[::2])    # [0, 2, 4, 6, 8] - 2칸씩 건너뛰기
print(arr[::-1])   # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] - 역순