파이썬 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는 그 첫걸음을 함께할 든든한 라이브러리다.