0Pricing
Python Academy · 강의

인덱싱, 슬라이싱 및 고급 인덱싱

고급 인덱싱 기법으로 배열 요소에 액세스하고 수정합니다.

인덱싱, 슬라이싱 및 고급 인덱싱은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

기본 인덱싱

0부터 시작하는 정수 인덱스로 요소에 접근합니다. 음수 인덱스는 끝에서부터 셉니다. 다차원 배열에서는 쉼표로 구분된 인덱스를 사용합니다.

import numpy as np

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

슬라이싱

start:stop:step 형식의 슬라이싱은 뷰를 반환합니다. 각 차원에 독립적으로 적용됩니다.

import numpy as np

m = np.arange(16).reshape(4,4)
print(m[1:3, 1:3])
# [[5 6]
#  [9 10]]
print(m[::2, ::2])   # every other row and column

불리언 인덱싱(마스킹)

같은 형태의 불리언 배열을 전달하면 True인 위치의 요소를 선택할 수 있습니다.

import numpy as np

arr = np.array([1, -2, 3, -4, 5])
mask = arr > 0
print(mask)         # [ True False  True False  True]
print(arr[mask])    # [1 3 5]
arr[~mask] = 0      # set negatives to 0
print(arr)          # [1 0 3 0 5]

정수 배열을 사용한 고급 인덱싱

정수 인덱스 배열을 전달하면 여러 개의 특정 요소를 선택할 수 있습니다.

import numpy as np

arr = np.array([10, 20, 30, 40, 50])
idx = np.array([0, 2, 4])
print(arr[idx])   # [10 30 50]

# 2-D fancy indexing:
m = np.arange(9).reshape(3,3)
print(m[[0,2], [0,2]])   # [m[0,0], m[2,2]] = [0, 8]

인덱스 선택을 위한 np.where

인수를 하나만 전달한 np.where(condition)는 condition이 True인 위치의 인덱스를 반환합니다.

import numpy as np

arr = np.array([5, 2, 8, 1, 9])
idx = np.where(arr > 4)[0]
print(idx)         # [0 2 4]
print(arr[idx])    # [5 8 9]

np.take와 np.put

np.take(arr, indices)는 요소를 선택하며, 평탄화된 인덱싱을 지원합니다. np.put(arr, indices, values)는 값을 삽입합니다.

import numpy as np

arr = np.array([10, 20, 30, 40])
print(np.take(arr, [1, 3]))   # [20 40]

np.put(arr, [0, 2], [99, 88])
print(arr)   # [99 20 88 40]

np.nonzero

np.nonzero(arr)는 차원마다 하나씩 배열을 담은 튜플을 반환합니다. 각 배열에는 0이 아닌 요소의 인덱스가 들어 있습니다.

import numpy as np

arr = np.array([[0,1,0],[2,0,3]])
rows, cols = np.nonzero(arr)
print(rows, cols)   # [0 1 1] [1 0 2]

줄임표 인덱싱

...(Ellipsis)는 남은 차원을 모두 다루는 데 필요한 수만큼 :로 확장됩니다.

import numpy as np

arr = np.ones((2,3,4,5))
print(arr[0, ..., 2].shape)   # (3, 4) — first dim=0, last dim=2
print(arr[..., 0].shape)      # (2, 3, 4) — last dim=0

외부 인덱싱을 위한 np.ix_

np.ix_는 여러 1차원 시퀀스로부터 외적 방식의 고급 인덱싱에 사용할 열린 메시를 구성합니다.

import numpy as np

m = np.arange(25).reshape(5,5)
rows = [0, 2, 4]
cols = [1, 3]
print(m[np.ix_(rows, cols)])
# [[ 1  3]
#  [11 13]
#  [21 23]]

고급 인덱스에 할당하기

고급 인덱스로 선택한 항목에 제자리에서 값을 할당할 수 있습니다.

import numpy as np

arr = np.zeros(5)
arr[[1, 3]] = [10, 20]
print(arr)   # [ 0. 10.  0. 20.  0.]

# Broadcast a scalar:
arr[[0, 2, 4]] = 99
print(arr)   # [99. 10. 99. 20. 99.]

인덱싱에서 뷰와 복사본의 차이

기본 인덱싱/슬라이스 인덱싱 → 뷰(수정하면 원본이 변경됨). 고급 인덱싱/불리언 인덱싱 → 복사본(수정해도 원본이 변경되지 않음).

import numpy as np

arr = np.arange(5)
view = arr[1:4]   # view
view[0] = 99
print(arr)         # [0 99 2 3 4]

copy = arr[[1,2,3]]   # fancy → copy
copy[0] = 0
print(arr)         # unchanged

빠른 확인

불리언 인덱싱이나 고급 인덱싱은 뷰를 반환하나요, 복사본을 반환하나요?

복습

단일 요소에는 [row, col]을, 슬라이스에는 start:stop:step을 사용합니다. 슬라이스는 뷰를 반환하고, 불리언 배열과 정수 배열을 사용한 고급 인덱싱은 복사본을 반환합니다. 인덱스를 얻으려면 np.where를, 외부 메시를 만들려면 np.ix_를 사용합니다.

자주 묻는 질문

“인덱싱, 슬라이싱 및 고급 인덱싱” 강의는 무료인가요?

네 — “인덱싱, 슬라이싱 및 고급 인덱싱” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“인덱싱, 슬라이싱 및 고급 인덱싱”에서 뭘 배우나요?

고급 인덱싱 기법으로 배열 요소에 액세스하고 수정합니다. 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Python Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“인덱싱, 슬라이싱 및 고급 인덱싱” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. NumPy 배열과 dtypes
  2. 배열 연산과 브로드캐스팅
  3. 인덱싱, 슬라이싱 및 고급 인덱싱
  4. NumPy를 활용한 선형대수
← Python Academy(으)로 돌아가기