NumPy란 무엇인가?
GPU 연산 전에 꼭 알아야 할 파이썬 수학 연산의 기본기
👋 시작하며
“GPU 연산? CUDA? PyCUDA? JAX?”
이런 단어들이 눈에 띄기 시작했다면,
그 전에 먼저 NumPy를 제대로 이해하는 것이 아주 중요합니다.
오늘은 수치 연산의 기본기이자,
GPU 연산의 출발점이라고 할 수 있는 NumPy를
예제 중심으로 쉽고, 빠르게 이해해보겠습니다.
🧩 NumPy란?
**NumPy(Numerical Python)**는 과학 계산에 특화된 파이썬 라이브러리입니다.
특히 배열 연산, 선형대수, 통계 처리 등에서 많이 쓰여요.
간단히 말해서:
"파이썬을 수학 계산용 언어로 만들어주는 도구"
💡 NumPy를 쓰면 뭐가 좋을까?
고성능 다차원 배열 | ndarray라는 타입을 사용 |
브로드캐스팅 지원 | 크기가 다른 배열 간 연산 자동 처리 |
벡터화 연산 | 반복문 없이 연산 처리 가능 (빠름!) |
다양한 수학 함수 | np.sin, np.mean, np.dot 등 풍부한 API |
🔧 NumPy 설치
pip install numpy
🧪 NumPy 기본 예제
import numpy as np
# 1차원 배열 만들기
a = np.array([1, 2, 3])
print("a:", a)
# 벡터화된 연산
b = a * 2
print("a * 2:", b)
# 2차원 배열 (행렬)
mat = np.array([[1, 2], [3, 4]])
print("행렬:\n", mat)
# 행렬 곱
result = np.dot(mat, mat)
print("행렬곱:\n", result)
✅ 출력 결과:
a: [1 2 3]
a * 2: [2 4 6]
행렬:
[[1 2]
[3 4]]
행렬곱:
[[ 7 10]
[15 22]]
🚀 왜 NumPy는 빠를까?
➤ 벡터화(Vectorization)
a + b # 반복문 없이 배열끼리 연산
➤ 내부는 C로 구현되어 있음
→ Python의 느린 for문 대신,
C로 작성된 배열 연산을 사용하여 속도가 빠름!
🔄 GPU 연산과의 연결점?
NumPy는 CPU에서만 작동해요.
하지만, 우리가 다룰 PyCUDA나 JAX는 NumPy 스타일을 그대로 따라하면서,
연산을 GPU로 오프로드합니다.
즉, NumPy를 잘 다루는 개발자라면 PyCUDA/JAX도 쉽게 적응할 수 있어요.
✨ 마무리하며
NumPy는 딥러닝, 데이터 분석, 과학 계산 등 수많은 분야의 "연산 엔진"입니다.
이 글에서 우리는:
- NumPy가 뭔지
- 왜 중요한지
- 기본 사용법
을 다뤘어요.
📌 다음 글 예고
👉 [다음 편] PyCUDA란 무엇인가? Python으로 GPU를 직접 다루는 법
PyCUDA는 GPU 코드를 Python에서 직접 작성하고 실행할 수 있는 강력한 무기입니다.
다음 글에서는 CUDA 커널이 뭔지, PyCUDA는 어떻게 사용하는지
쉽고 강력한 예제로 풀어보겠습니다.