PYTHON · 성능
numpy 벡터화
numpy의 벡터화 연산으로 루프 대비 100배 이상 빠른 수치 계산을 수행합니다.
성능고급numpy벡터화수치 계산성능
핵심 설명
numpy의 벡터화 연산으로 루프 대비 100배 이상 빠른 수치 계산을 수행합니다.
Python code
# numpy 패턴 시뮬레이션 (실제는 pip install numpy)
import time
import array
# 순수 Python 루프
def python_sum_squares(n):
return sum(x * x for x in range(n))
# array 모듈 (numpy 경량 대안)
def array_operations():
a = array.array("d", range(1000))
b = array.array("d", range(1000))
# 원소별 연산은 여전히 루프 필요
result = array.array("d", (x + y for x, y in zip(a, b)))
return sum(result)
# 벤치마크
n = 100000
start = time.perf_counter()
r1 = python_sum_squares(n)
t1 = time.perf_counter() - start
print(f"Python 루프: {t1:.4f}초, 결과: {r1}")
# numpy 사용법 (설치 필요)
# import numpy as np
# arr = np.arange(n)
# start = time.perf_counter()
# r2 = np.sum(arr ** 2) # 벡터화 연산
# t2 = time.perf_counter() - start
# print(f"NumPy: {t2:.4f}초, 속도향상: {t1/t2:.0f}x")
# numpy 벡터화 패턴
patterns = """
# 벡터화 패턴:
arr = np.array([1, 2, 3, 4, 5])
arr * 2 # [2, 4, 6, 8, 10]
arr ** 2 # [1, 4, 9, 16, 25]
np.sum(arr) # 15
np.mean(arr) # 3.0
np.where(arr > 3) # [4, 5]
arr[arr > 3] # 불리언 인덱싱
# 행렬 연산
A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
C = A @ B # 행렬 곱
"""
print(patterns)학습 팁
NumPy 배열의 반복문은 순수 Python만큼 느립니다. 항상 벡터화 연산(+, *, np.sum)을 사용하세요.
주의할 점
np.append()를 루프 안에서 사용하면 매번 배열을 복사하여 O(n²)가 됩니다. 리스트로 모은 후 한 번에 변환하세요.
자주 묻는 질문
numpy 벡터화란 무엇인가요?
numpy 의 벡터화 연산으로 루프 대비 100배 이상 빠른 수치 계산을 수행합니다.
numpy 벡터화 학습 시 주의할 점은 무엇인가요?
np.append() 를 루프 안에서 사용하면 매번 배열을 복사하여 O(n²)가 됩니다. 리스트로 모은 후 한 번에 변환하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.