NumPy 완벽 정리 — 숫자 배열 다루기
AI 데이터의 기본 단위인 NumPy 배열(ndarray)의 생성, 연산, 브로드캐스팅, 인덱싱까지
2026.04.10
0. 시리즈
| 편 | 제목 | 역할 |
|---|---|---|
| 1편⬅️ | NumPy 완벽 정리 — 숫자 배열 다루기 | 데이터 기초 |
| 2편 | Pandas 완벽 정리 — 데이터 불러오고 정리하기 | 데이터 전처리 |
| 3편 | Matplotlib / Seaborn — 데이터 시각화 | 시각화 |
| 4편 | Scikit-learn — 머신러닝 실습 입문 | ML 실습 |
| 5편 | TensorFlow / Keras — 딥러닝 모델 만들기 | DL 실습 |
| 6편 | PyTorch 입문 — Keras와 무엇이 다를까? | DL 심화 |
1. AI 실습, 왜 Python인가?
💡 환경 세팅이 아직 안 됐다면? Python 설치, 가상환경 만들기, Google Colab 사용법은 → [환경 세팅 가이드 링크] 를 참고하세요.
1-1. 문법이 간결해 빠르게 코드로 옮길 수 있다
Python은 다른 언어에 비해 코드가 짧고 읽기 쉽습니다. 예를 들어 리스트의 모든 값을 2배로 만들 때:
python# Python (한 줄)
doubled = [x * 2 for x in data]
// Java (여러 줄)
List<Integer> doubled = new ArrayList<>();
for (int x : data) {
doubled.add(x * 2);
}
아이디어를 바로 코드로 옮길 수 있어서, 실험과 수정이 잦은 AI 개발에 특히 유리합니다.
1-2. AI 전용 라이브러리 생태계가 압도적이다
| 라이브러리 | 역할 |
|---|---|
| NumPy | 숫자 배열 연산 |
| Pandas | 데이터 전처리 |
| Scikit-learn | 머신러닝 알고리즘 |
| TensorFlow / Keras | 딥러닝 모델 구현 |
| PyTorch | 딥러닝 연구·심화 |
이 모든 라이브러리가 Python 전용 으로 설계되어 있습니다. 다른 언어로 같은 작업을 하려면 수십 배의 코드가 필요합니다.
1-3. 전 세계 AI 연구자들의 표준 언어
구글, 메타, OpenAI 등 주요 AI 연구소의 공식 코드가 모두 Python으로 공개됩니다. 논문 구현 코드, Stack Overflow 답변, 유튜브 강의 — 거의 모든 레퍼런스가 Python 기준입니다. 즉, 모르는 게 생겼을 때 검색만 해도 답이 나오는 언어 입니다.
2. NumPy란?
2-1. NumPy가 뭔가요?
NumPy(넘파이) 는 Python에서 수치 계산을 빠르게 처리하기 위해 만들어진 라이브러리입니다. 이름은 Num erical Py thon의 줄임말입니다.
AI에서 다루는 데이터는 결국 전부 숫자입니다.
- 이미지 → 픽셀 값의 숫자 배열
- 텍스트 → 단어를 숫자로 변환한 배열
- 음성 → 음파를 샘플링한 숫자 배열
NumPy는 이런 대규모 숫자 데이터를 빠르고 효율적으로 처리 하는 도구입니다.
2-2. 왜 일반 Python 리스트 대신 NumPy를 쓰나요?
| 비교 항목 | Python 리스트 | NumPy 배열 |
|---|---|---|
| 연산 속도 | 느림 | 최대 100배 빠름 |
| 메모리 효율 | 낮음 | 높음 |
| 수학 연산 | 직접 반복문 작성 | 한 줄로 처리 |
| 다차원 배열 | 불편함 | 자연스럽게 지원 |
Python 리스트는 범용적이지만, 수백만 개의 숫자를 다루는 AI 실습에서는 NumPy 없이는 버티기 어렵습니다.
2-3. NumPy 설치
bashpip install numpy
Google Colab을 사용한다면 이미 설치되어 있어 별도 설치 불필요합니다.
pythonimport numpy as np
print(np.__version__) # 예: 1.26.4
3. 핵심 개념 — 배열(ndarray)
3-1. 배열 만들기
NumPy의 핵심 자료구조는 ndarray(N-dimensional array) 입니다.
pythonimport numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a) # [1 2 3 4 5]
print(type(a)) # <class 'numpy.ndarray'>
3-2. 1차원 / 2차원 / 3차원 배열
python# 1차원 — 벡터 (데이터 한 줄)
a1 = np.array([1, 2, 3])
# 2차원 — 행렬 (표 형태, 이미지 1장)
a2 = np.array([[1, 2, 3],
[4, 5, 6]])
# 3차원 — 여러 행렬의 묶음 (컬러 이미지, 여러 장의 이미지)
a3 = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])
💡 컬러 이미지 한 장은 (높이 × 너비 × 3) 형태의 3차원 배열입니다. (3은 RGB 채널)
3-3. 배열의 형태 확인
pythona2 = np.array([[1, 2, 3],
[4, 5, 6]])
print(a2.shape) # (2, 3) → 2행 3열
print(a2.ndim) # 2 → 2차원
print(a2.dtype) # int64 → 정수형
4. 자주 쓰는 NumPy 기능
4-1. 배열 생성 함수
pythonnp.zeros((3, 3)) # 0으로 채운 3×3 배열
np.ones((2, 4)) # 1로 채운 2×4 배열
np.arange(0, 10, 2) # [0 2 4 6 8] — 범위로 생성
np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1.] — 균등 간격
np.random.rand(3, 3) # 0~1 사이 난수 3×3 배열
4-2. 배열 연산 — 브로드캐스팅
NumPy는 반복문 없이 배열 전체에 연산을 적용합니다.
pythona = np.array([1, 2, 3, 4])
print(a + 10) # [11 12 13 14]
print(a * 2) # [ 2 4 6 8]
print(a ** 2) # [ 1 4 9 16]
b = np.array([10, 20, 30, 40])
print(a + b) # [11 22 33 44]
브로드캐스팅 이란 크기가 다른 배열끼리도 자동으로 맞춰서 연산해주는 기능입니다.
pythona = np.array([[1, 2, 3],
[4, 5, 6]])
print(a + 100)
# [[101 102 103]
# [104 105 106]]
4-3. 인덱싱 & 슬라이싱
pythona = np.array([10, 20, 30, 40, 50])
print(a[0]) # 10 — 첫 번째 요소
print(a[-1]) # 50 — 마지막 요소
print(a[1:4]) # [20 30 40] — 슬라이싱
b = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(b[1, 2]) # 6 — 1행 2열
print(b[:, 1]) # [2 5 8] — 전체 행의 1열
print(b[0:2, :]) # 0~1행 전체
4-4. 통계 함수
pythona = np.array([1, 2, 3, 4, 5])
print(np.sum(a)) # 15
print(np.mean(a)) # 3.0
print(np.max(a)) # 5
print(np.min(a)) # 1
print(np.std(a)) # 표준편차: 1.414...
5. AI에서 NumPy가 쓰이는 곳
5-1. 이미지 데이터를 숫자 배열로 표현하는 법
컴퓨터는 이미지를 픽셀 값의 숫자 배열로 인식합니다.
python# 28×28 흑백 이미지 (MNIST 손글씨 숫자 데이터셋)
image = np.random.randint(0, 256, size=(28, 28))
print(image.shape) # (28, 28)
# 컬러 이미지 (RGB)
color_image = np.random.randint(0, 256, size=(64, 64, 3))
print(color_image.shape) # (64, 64, 3)
픽셀 하나의 값은 0(검정) ~ 255(흰색) 사이의 정수입니다.
5-2. 딥러닝 입력 데이터 형태 미리보기
딥러닝 모델은 항상 배치(batch) 단위로 데이터를 받습니다.
이미지 100장을 한 번에 학습시킬 때의 데이터 형태:
(100, 64, 64, 3)
↑ ↑ ↑ ↑
배치 높이 너비 채널(RGB)
나중에 TensorFlow/Keras 편에서 다시 등장하니 지금은 "AI 데이터는 결국 숫자 배열이다" 정도만 기억해두세요.
6. 마무리
6-1. 오늘 배운 것 한눈에 정리
| 개념 | 핵심 내용 |
|---|---|
| NumPy란? | Python의 수치 계산 전용 라이브러리 |
| ndarray | NumPy의 핵심 자료구조 — 다차원 배열 |
| 브로드캐스팅 | 반복문 없이 배열 전체 연산 가능 |
| AI와의 연결 | 이미지, 텍스트 등 모든 AI 데이터는 숫자 배열 |