1. NumPy 배열 기초
- NumPy의 기본 단위는 ndarray (n-dimensional array)
- 리스트보다 메모리 효율적이고 연산이 빠름
- 엑셀 파일에서 숫자 데이터를 불러와 계산할 때, 벡터 연산으로 반복문을 없앨 수 있음
예시: Python 리스트와 NumPy 배열의 차이
import numpy as np
py_list = [1, 2, 3]
np_array = np.array([1, 2, 3])
try:
print(py_list + 1) # TypeError: Python List 는 브로드캐스팅 불가능
except TypeError as e:
print(f"TypeError: {e}")
# NumPy 배열은 벡터 연산 가능
print(f"np_array: {np_array}")
print(f"np_array + 1: {np_array + 1}") # [2 3 4]
2. 배열 연산, 인덱싱, 슬라이싱
- for 루프 없이 배열 단위로 연산 가능
- 인덱싱/슬라이싱은 Python 리스트처럼 직관적이며 더 강력함
- 대용량 로그, 매출, 센서 데이터 등에서 조건 필터링 + 통계 연산을 빠르게 처리 가능
예시: 매출 데이터 통계
# 하루 단위 매출 (단위: 천원)
daily_sales = np.array([100, 200, 150, 300, 250])
# 평균
print("평균 매출:", daily_sales.mean()) # 200.0
# 200 이상인 날만 추출
high_sales = daily_sales[daily_sales >= 200]
print("고매출일:", high_sales) # [200 300 250]
3. Shape Manipulation – 다차원 배열과 형상 변경
.reshape(), .ravel(), .transpose() 등으로 차원 변경 가능
- 머신러닝 데이터 전처리, 이미지/행렬 처리에서 자주 사용
- 이미지 처리, 머신러닝 모델 입력 전처리에서 필수
- RAG 시스템의 벡터 임베딩 reshape 시 활용
예시: 1차원 배열을 2차원으로 변환
# 1차원 데이터
flat = np.array([1, 2, 3, 4, 5, 6])
# 2행 3열로 변환
reshaped = flat.reshape((2, 3))
print(reshaped)
# [[1 2 3]
# [4 5 6]]
예시: 이미지 데이터 전처리
# 예: 100x100 RGB 이미지 → (height, width, channels)
img = np.random.randint(0, 255, size=(100, 100, 3), dtype=np.uint8)
# PyTorch 등의 모델 입력을 위해 (channels, height, width) 로 변환
img_transposed = img.transpose((2, 0, 1))
print(img_transposed.shape) # (3, 100, 100)
References
Backlinks