NumPy 완벽 정리 — 숫자 배열 다루기

AI 데이터의 기본 단위인 NumPy 배열(ndarray)의 생성, 연산, 브로드캐스팅, 인덱싱까지

2026.04.10

NumPyndarrayarraybroadcastingindexingdata preprocessingPythonAI

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의 수치 계산 전용 라이브러리
ndarrayNumPy의 핵심 자료구조 — 다차원 배열
브로드캐스팅반복문 없이 배열 전체 연산 가능
AI와의 연결이미지, 텍스트 등 모든 AI 데이터는 숫자 배열