C
Python/데이터/Lesson 26

NumPy 소개

1시간·theory
이 챕터
1/2
Python

NumPy 소개

🎯 이 lesson 을 읽고 나면

이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.

  • ✅ Python 이 AI/데이터 표준 언어가 됐는지
  • ✅ Python 3.x 기준 venv + requirements.txt 셋업
  • ✅ print / input / type / dir 4개 내장 함수

학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.

NumPy — 코드 + 실행 결과

NumPy = 수치 계산 표준. 배열을 C 속도 로. PyTorch·TensorFlow·Pandas 모두 NumPy 기반.


1. 설치 + 배열 만들기

bash
$ pip install numpy
python
import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(a)             # [1 2 3 4 5]
print(a.shape)       # (5,)
print(a.dtype)       # int64

# 자주 쓰는 생성
np.zeros(5)          # [0. 0. 0. 0. 0.]
np.ones((2, 3))      # 2×3 1로 채움
np.arange(0, 10, 2)  # [0 2 4 6 8]
np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1.]

2. 벡터 연산 — 한 줄로

python
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

print(a + b)         # [5 7 9]      ← 원소별 +
print(a * b)         # [4 10 18]    ← 원소별 *
print(a * 2)         # [2 4 6]      ← 모든 원소 × 2
print(a ** 2)        # [1 4 9]      ← 제곱
print(a.sum())       # 6
print(a.mean())      # 2.0

list 와 가장 큰 차이 — [1,2,3] + [4,5,6] = [1,2,3,4,5,6] (이어붙이기). NumPy 는 수학 연산.


3. 2D 배열 (행렬)

python
A = np.array([[1, 2, 3],
              [4, 5, 6]])

print(A.shape)       # (2, 3)
print(A[0, 1])       # 2 (행0, 열1)
print(A[:, 0])       # [1 4]  (모든 행, 0번 열)
print(A.T)           # 전치 — [[1 4], [2 5], [3 6]]

4. 통계

python
데이터 = np.array([85, 92, 78, 90, 88])

print(데이터.mean())      # 86.6 (평균)
print(데이터.std())       # 5.16 (표준편차)
print(데이터.max())       # 92
print(데이터.argmax())    # 1 (최대값 인덱스)
print(np.median(데이터))  # 88

5. 조건 — boolean indexing

python
a = np.array([1, -2, 3, -4, 5])

양수만 = a[a > 0]                    # [1 3 5]
a[a < 0] = 0                          # [-값 → 0]
print(a)                              # [1 0 3 0 5]

6. 속도 — Python list 비교

python
import time

# Python list
lst = list(range(10_000_000))
시작 = time.time()
결과 = [x * 2 for x in lst]
print(f"list: {time.time()-시작:.2f}초")     # 약 0.5초

# NumPy
arr = np.arange(10_000_000)
시작 = time.time()
결과 = arr * 2
print(f"numpy: {time.time()-시작:.2f}초")    # 약 0.02초 (25배 빠름)

한 줄 요약

np.array() + 벡터 연산 + boolean indexing + 통계 = 데이터 분석 시작.

💻 NumPy 시작하기
# pip install numpy
import numpy as np

# Python 리스트 vs NumPy
python_list = [1, 2, 3, 4, 5]
numpy_array = np.array([1, 2, 3, 4, 5])

# 속도 비교 (NumPy가 훨씬 빠름)
import time

size = 1000000
py_list = list(range(size))
np_arr = np.arange(size)

# Python 리스트
start = time.time()
result = [x * 2 for x in py_list]
print(f"Python: {time.time() - start:.4f}s")

# NumPy 배열
start = time.time()
result = np_arr * 2
print(f"NumPy: {time.time() - start:.4f}s")

# NumPy 장점
# 1. 벡터화 연산 (반복문 불필요)
arr = np.array([1, 2, 3])
print(arr + 10)      # [11, 12, 13]
print(arr * 2)       # [2, 4, 6]
print(arr ** 2)      # [1, 4, 9]

# 2. 브로드캐스팅
a = np.array([[1], [2], [3]])
b = np.array([10, 20, 30])
print(a + b)  # 자동 확장

💡 핵심 포인트

1. C로 구현되어 매우 빠름
2. 벡터화: 반복문 없이 연산
3. 브로드캐스팅: 크기 자동 맞춤

Python은 간결하고 읽기 쉬운 문법으로 다양한 분야에 활용됩니다. 인터프리터 언어로 REPL 환경에서 즉시 실행 가능합니다. PEP 8 코딩 스타일 가이드를 따르고, Black/autopep8으로 자동 포맷팅합니다. 타입 힌트(type hints)로 코드 가독성과 IDE 지원을 향상시킵니다. pip로 패키지 관리, venv/conda로 가상환경을 구성합니다.

🐍 실행해보기 — NumPy 소개

위 개념을 실제로 코드로 실행해보세요. 값을 바꿔가며 어떻게 동작하는지 직접 확인하는 게 가장 빠른 학습.
✏️ Python 코드
📟 콘솔 출력
▶ 실행 버튼을 눌러보세요
🐍 Pyodide로 실제 Python 실행 — 첫 실행 시 로딩 3~5초 소요

🤖 AI 에게 이렇게 요청해보세요

이 lesson 의 개념을 알면 AI 에게 구체적으로 지시할 수 있습니다. 막연한 "고쳐줘" 가 아니라 어휘를 가진 요청 — 그게 토큰 절약의 출발점입니다.

  • "이 for 루프를 numpy 벡터 연산으로 바꿔줘"
  • "이 데이터 정제를 pandas method chaining 으로 리팩토링해줘"

왜 이게 토큰을 줄이나

개념을 모를 땐 AI 답변을 받고도 "그게 뭐예요?" 를 다시 물어야 합니다. 그 "다시 물음" 이 토큰을 잡아먹습니다. 개념 한 번 익혀두면 대화가 한 번에 끝납니다.

먼저 읽으면 좋은 개념: FastAPI 입문
다음 추천: Pandas 입문
NumPy 입문 - Python