NumPy 개요 및 사용법
1. NumPy란?
NumPy(Numerical Python)는 Python에서 수학적 연산과 다차원 배열 연산을 수행하는 대표적인 라이브러리입니다.
- 빠르고 효율적인 다차원 배열(ndarray) 연산
- C 기반 구현으로 높은 성능 제공
- 벡터화 연산을 통해 반복문 최소화
- 선형 대수, 난수 생성, 푸리에 변환 등 다양한 기능 포함
- Pandas, SciPy, PyTorch 등의 여러 라이브러리의 기반 역할
2. NumPy 배열(NDArray)
NumPy의 핵심 데이터 구조는 ndarray (N-dimensional array) 입니다.
(1) 배열 생성
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))
(2) 다차원 배열
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
print(arr2d.shape)
print(arr2d.ndim)
print(arr2d.dtype)
3. NumPy 주요 기능
(1) 배열 생성 함수
zeros = np.zeros((3, 3))
ones = np.ones((2, 4))
full = np.full((3, 3), 7)
identity = np.eye(4)
print(zeros)
print(ones)
print(full)
print(identity)
(2) 난수 생성
rand_uniform = np.random.rand(3, 3)
rand_normal = np.random.randn(3, 3)
rand_int = np.random.randint(0, 10, (3, 3))
np.random.seed(42)
print(rand_uniform)
print(rand_normal)
print(rand_int)
(3) 배열 연산
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a - b)
print(a * b)
print(a / b)
(4) 행렬 연산
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B)
print(C)
print(A.T)
A_inv = np.linalg.inv(A)
det = np.linalg.det(A)
print(A_inv)
print(det)
(5) 배열 인덱싱 및 슬라이싱
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1])
print(arr[0, :])
print(arr[:, 0:2])
(6) 배열 조건 처리
arr = np.array([1, 2, 3, 4, 5])
print(arr[arr > 2])
arr[arr > 2] = 10
print(arr)
4. NumPy vs Python List 성능 비교
import time
size = 10**6
# Python 리스트 연산 속도 비교
start = time.time()
a_list = list(range(size))
b_list = list(range(size))
c_list = [a + b for a, b in zip(a_list, b_list)]
print("Python 리스트 연산 시간:", time.time() - start)
# NumPy 배열 연산 속도 비교
start = time.time()
a_array = np.arange(size)
b_array = np.arange(size)
c_array = a_array + b_array
print("NumPy 배열 연산 시간:", time.time() - start)
5. NumPy 요약
| 기능 | 설명 |
|---|---|
| 배열 생성 | np.array(), np.zeros(), np.ones(), np.eye() |
| 난수 생성 | np.random.rand(), np.random.randint() |
| 배열 연산 | +, -, *, /, np.dot() |
| 선형 대수 | np.linalg.inv(), np.linalg.det(), A.T |
| 인덱싱 | arr[i, j], arr[:, i], Fancy Indexing |
| 조건 필터링 | arr[arr > 2] |
'[Python] Code' 카테고리의 다른 글
| [Python] 자료구조 (0) | 2025.02.10 |
|---|---|
| [Python] PyTorch 소개 (0) | 2025.02.09 |
| [Python] Einops (0) | 2025.02.09 |
| [Python] Einsum (0) | 2025.02.09 |