배열 연산과 브로드캐스팅
벡터화된 산술 연산을 수행하고 브로드캐스팅 규칙을 이해합니다.
배열 연산과 브로드캐스팅은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
벡터화된 산술 연산
NumPy는 Python 반복문 없이 전체 배열에 대해 요소별로 산술 연산을 적용합니다. 연산은 최적화된 C 코드로 실행됩니다.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]범용 함수(ufunc)
NumPy의 ufunc는 요소별 C 수준 함수를 적용합니다. 예로 np.sqrt, np.exp, np.log, np.sin 등이 있습니다.
import numpy as np
x = np.linspace(0, np.pi, 5)
print(np.sin(x)) # [0. 0.707 1. 0.707 0.]
print(np.exp([1.0, 2.0, 3.0])) # [2.718 7.389 20.086]축약 연산
np.sum, np.mean, np.max, np.min, np.std를 사용하면 배열을 스칼라 또는 더 낮은 차원의 배열로 축약할 수 있습니다.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(m)) # 21
print(np.sum(m, axis=0)) # [5 7 9] — sum each column
print(np.sum(m, axis=1)) # [6 15] — sum each row브로드캐스팅 규칙
브로드캐스팅은 데이터를 복사하지 않고 작은 배열을 큰 배열에 맞게 확장합니다. 규칙은 차원을 오른쪽부터 맞추고, 크기가 1인 차원을 확장하는 것입니다.
import numpy as np
a = np.array([[1], [2], [3]]) # shape (3,1)
b = np.array([10, 20, 30]) # shape (3,)
print(a + b)
# [[11 21 31]
# [12 22 32]
# [13 23 33]]스칼라 연산 브로드캐스팅
스칼라는 배열의 모든 요소에 브로드캐스팅됩니다.
import numpy as np
arr = np.arange(6).reshape(2, 3)
print(arr + 10)
# [[10 11 12]
# [13 14 15]]
print(arr * 0.5)
# [[0. 0.5 1. ]
# [1.5 2. 2.5]]비교와 불리언 연산
비교 연산은 불리언 배열을 생성합니다. &, |, ~와 결합하여 사용하며, Python의 and/or/not은 사용하지 않습니다.
import numpy as np
arr = np.array([1, 5, 3, 8, 2])
print(arr > 3) # [False True False True False]
print(arr[(arr > 2) & (arr < 7)]) # [5 3]where()
np.where(condition, x, y)는 condition이 True인 위치에서는 x의 요소를, False인 위치에서는 y의 요소를 반환합니다.
import numpy as np
arr = np.array([-2, 3, -1, 4, 0])
result = np.where(arr >= 0, arr, 0) # clip negatives to 0
print(result) # [0 3 0 4 0]축을 따른 집계
다차원 배열의 특정 차원을 따라 축약하려면 axis=를 지정합니다.
import numpy as np
data = np.arange(12).reshape(3, 4)
print(data.mean(axis=0)) # mean of each column → shape (4,)
print(data.mean(axis=1)) # mean of each row → shape (3,)cumsum과 diff
np.cumsum은 누적 합을 계산하고, np.diff는 연속된 요소 사이의 차이를 계산합니다.
import numpy as np
prices = np.array([100, 110, 105, 115])
print(np.cumsum(prices)) # [100 210 315 430]
print(np.diff(prices)) # [10 -5 10] (daily changes)벡터화된 문자열 연산
np.char는 문자열 배열에 벡터화된 문자열 연산을 제공합니다.
import numpy as np
words = np.array(["apple", "banana", "cherry"])
print(np.char.upper(words)) # ['APPLE' 'BANANA' 'CHERRY']
print(np.char.startswith(words, "a")) # [True False False]Python 리스트와의 성능 비교
NumPy는 수치 연산에서 동일한 작업을 수행하는 Python 반복문보다 10~100배 빠릅니다. Python 인터프리터의 오버헤드 없이 C에서 실행되기 때문입니다.
import numpy as np, time
n = 1_000_000
start = time.perf_counter()
python_sum = sum(i**2 for i in range(n))
print(f"Python: {time.perf_counter()-start:.3f}s")
arr = np.arange(n)
start = time.perf_counter()
numpy_sum = (arr**2).sum()
print(f"NumPy: {time.perf_counter()-start:.3f}s")빠른 확인
shape-(3,1) 배열을 shape-(3,) 배열에 더하면 결과의 형태는 어떻게 되나요?
복습
NumPy 연산은 Python 반복문 없이 C에서 요소별로 실행됩니다. 브로드캐스팅은 복사하지 않고 호환되는 형태를 확장합니다. 특정 차원을 따라 축약하려면 axis=를 사용합니다. ufunc(np.sin, np.exp 등)는 C 속도로 요소별 연산을 적용합니다.
자주 묻는 질문
“배열 연산과 브로드캐스팅” 강의는 무료인가요?
네 — “배열 연산과 브로드캐스팅” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“배열 연산과 브로드캐스팅”에서 뭘 배우나요?
벡터화된 산술 연산을 수행하고 브로드캐스팅 규칙을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“배열 연산과 브로드캐스팅” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- NumPy 배열과 dtypes
- 배열 연산과 브로드캐스팅
- 인덱싱, 슬라이싱 및 고급 인덱싱
- NumPy를 활용한 선형대수