파이썬 Numpy
수치 데이터를 빠르고 쉽게 다룰 수 있게 해주는 라이브러리
Jun 12, 2025
처음 데이터를 다루기 시작하면,
셀 수 없이 많은 숫자들과 반복되는 계산에 쉽게 지치곤 한다.
엑셀로는 버거운 일도 많고,
파이썬 문법만으로는 복잡하고 느리게 느껴질 때가 있다.
그럴 때, 간결한 코드로 빠르고 유연하게 수치 데이터를 다룰 수 있는 도구,
바로 NumPy가 있다.
1. NumPy란?
• 수학 계산, 통계 분석, 시뮬레이션, 머신러닝, 이미지 처리 등에 쓰인다.
• 배열 기반의 계산을 빠르게 수행한다.
2. 배열 생성과 속성 확인
arr = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
속성 | 설명 | 예시 출력 |
---|---|---|
arr.ndim |
차원 | 2 |
arr.shape |
형태 (행, 열) | (3, 3) |
arr.size |
전체 원소 개수 | 9 |
arr.dtype |
데이터 타입 | int64 (또는 int32) |
arr.itemsize |
원소 하나의 메모리 크기 | 8 (바이트) |
arr.strides |
다음 원소로 가는 메모리 간격 | 예: (24, 8) |
3. 실습 예제 요약
[예제1] 제품별 총 판매량과 총 수익 계산
data = [[120, 135, 150, 145], # 제품A
[100, 110, 140, 130], # 제품B
[90, 100, 95, 105]]
sales_data = np.array(data)
# 제품별 총 판매량
np.sum(sales_data, axis=1) # [550, 480, 390]
# 제품당 단가
profit_per_unit = np.array([20, 30, 25])
# 총 판매금액 계산
total_sales = np.dot(profit_per_unit, sales_data)
# 결과: 각 분기별 총수익이 나옴
[예제2] 이미지 처리 (흑백 변환, 밝기 조절, 반전)
from PIL import Image
img = Image.open('dog.jpg').convert('L') # 흑백 변환
img_ary = np.array(img) # 이미지 -> 배열
# 밝기 조금 증가
new_img = np.clip(img_ary + 10, 0, 255).astype(np.uint8)
Image.fromarray(new_img).save('new_sample.jpg')
# 반전 (밝은 건 어둡게, 어두운 건 밝게)
inverted = 255 - img_ary
Image.fromarray(inverted).save('new_sample1.jpg')
[예제3] 1차원 배열을 이용한 무작위 시뮬레이션 (랜덤 워크)
import matplotlib.pyplot as plt
n_step = 1000
step = np.random.choice([-1, 1], size=n_step) # -1 또는 1 중 선택
walk = np.cumsum(step) # 누적합으로 이동 경로 생성
plt.plot(walk)
🎲 주사위 굴리듯, 한 칸씩 왼쪽/오른쪽으로 움직이는 시뮬레이션 그래프가 그려진다.
[예제4] 텐서 생성
tensor_list = [[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]],
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]]
arr1 = np.array(tensor_list)
arr1.shape # (2, 3, 4) → 3차원 텐서
텐서는 다차원 배열 (예: 영상, 시계열, 이미지 데이터)
4. NumPy를 활용하는 대표 분야
분야 | 활용 예시 |
---|---|
데이터 분석 | 평균, 합계, 표준편차 계산 |
이미지 처리 | 픽셀 연산, 필터 적용 |
게임·시뮬레이션 | 무작위 이동, 모델링 |
머신러닝/딥러닝 | 벡터 계산, 데이터 전처리 |
오늘을 마치며
수많은 데이터 속에서 핵심을 뽑아내고,
복잡한 계산을 단 몇 줄로 끝내는 경험이 쌓이면
코드가 곧 도구가 되고,
도구는 결국 나의 날카로운 분석력이 된다.
NumPy는 그 첫걸음을 함께할 든든한 라이브러리다.