1. NumPy 개요
NumPy는 파이썬에서 수치 계산을 수행하기 위해 사용되는 대표적인 라이브러리이다.
주로 다차원 배열을 기반으로 빠른 수치 연산을 수행하는 데 목적이 있다.
NumPy 배열은 내부적으로 C 언어로 구현되어 있어 일반적인 파이썬 리스트보다 연산 속도가 빠르고 메모리 사용이 효율적이다.
다음과 같은 분야에서 널리 사용된다.
- 데이터 분석
- 머신러닝
- 딥러닝
- 과학 계산
- 통계 처리
설치
pip install numpy
기본 사용
import numpy as np
2. NumPy 핵심 구조
2.1 ndarray (N-dimensional array)
NumPy의 핵심 자료구조는 ndarray이다.
ndarray는 동일한 데이터 타입을 가지는 값들이 연속된 메모리 공간에 저장된 다차원 배열 객체이다.
지원하는 차원
- 1차원 배열 (Vector)
- 2차원 배열 (Matrix)
- 3차원 이상 배열 (Tensor)
리스트와 배열 비교
list1 = [1, 2, 3, 4]
print(type(list1))
print(type(list1[0]))
# 결과
# <class 'list'>
# <class 'int'>
ndarr1 = np.array([1,2,3,4])
print(type(ndarr1))
print(type(ndarr1[0]))
# 결과
# <class 'numpy.ndarray'>
# <class 'numpy.int64'>
2차원 배열 생성
ndarr2 = np.array([
[1,2,3],
[4,5,6]
])
print(ndarr2)
# 결과
# [[1 2 3]
# [4 5 6]]
ai가 추천하는 심화 예제
다차원 배열을 이용한 간단한 행렬 연산
A = np.array([
[1,2],
[3,4]
])
B = np.array([
[5,6],
[7,8]
])
C = np.dot(A, B)
print(C)
# 결과
# [[19 22]
# [43 50]]
3. 리스트와 ndarray 변환
3.1 리스트 → NumPy 배열
리스트를 ndarray로 변환할 때 np.array()를 사용한다.
list1 = [1,2,3,4]
ndarr = np.array(list1)
print(ndarr)
# 결과
# [1 2 3 4]
3.2 NumPy 배열 → 리스트
배열을 리스트로 변환할 때 tolist() 메서드를 사용한다.
list2 = ndarr.tolist()
print(list2)
# 결과
# [1, 2, 3, 4]
ai가 추천하는 심화 예제
데이터 분석에서 리스트 데이터를 NumPy로 변환한 뒤 통계 계산
scores = [75, 82, 90, 66, 88]
scores_np = np.array(scores)
mean_score = np.mean(scores_np)
std_score = np.std(scores_np)
print(mean_score)
print(std_score)
# 결과
# 80.2
# 8.419...
4. ndarray 데이터 타입
NumPy 배열은 모든 원소가 동일한 데이터 타입을 가져야 한다.
리스트는 서로 다른 타입을 동시에 가질 수 있다.
list1 = [1, 3.14, "Python", True]
print(list1)
# 결과
# [1, 3.14, 'Python', True]
NumPy에서는 하나의 타입으로 변환된다.
예시
arr = np.array([1,2,3.14])
print(arr.dtype)
# 결과
# float64
dtype 확인
arr = np.array([1,2,3])
print(arr.dtype)
# 결과
# int64
ai가 추천하는 심화 예제
dtype을 직접 지정하여 메모리 효율을 관리
arr = np.array([1,2,3,4], dtype=np.int8)
print(arr)
print(arr.dtype)
# 결과
# [1 2 3 4]
# int8
5. 배열의 주요 속성
shape
배열의 구조 (차원 크기)
arr = np.array([
[1,2,3],
[4,5,6]
])
print(arr.shape)
# 결과
# (2, 3)
ndim
배열의 차원 수
print(arr.ndim)
# 결과
# 2
size
전체 원소 개수
print(arr.size)
# 결과
# 6
dtype
데이터 타입
print(arr.dtype)
# 결과
# int64
ai가 추천하는 심화 예제
배열 구조를 이용한 데이터셋 정보 확인
data = np.random.rand(100, 10)
print(data.shape)
print(data.ndim)
print(data.size)
# 결과
# (100, 10)
# 2
# 1000
6. 배열 생성 방법
array()
arr = np.array([1,2,3])
print(arr)
# 결과
# [1 2 3]
zeros()
arr = np.zeros((3,3))
print(arr)
# 결과
# [[0. 0. 0.]
# [0. 0. 0.]
# [0. 0. 0.]]
ones()
arr = np.ones((2,4))
print(arr)
# 결과
# [[1. 1. 1. 1.]
# [1. 1. 1. 1.]]
arange()
arr = np.arange(0,10)
print(arr)
# 결과
# [0 1 2 3 4 5 6 7 8 9]
step 지정
arr = np.arange(0,10,2)
print(arr)
# 결과
# [0 2 4 6 8]
reshape()
arr = np.arange(6)
new_arr = arr.reshape(2,3)
print(new_arr)
# 결과
# [[0 1 2]
# [3 4 5]]
ai가 추천하는 심화 예제
머신러닝 데이터셋 형태 변환
data = np.arange(100)
data = data.reshape(20,5)
print(data.shape)
# 결과
# (20, 5)
7. 배열 인덱싱
1차원 배열
arr = np.array([1,2,3,4])
print(arr[0])
# 결과
# 1
2차원 배열
arr = np.array([
[1,2,3],
[4,5,6]
])
print(arr[0,1])
# 결과
# 2
ai가 추천하는 심화 예제
행 단위 데이터 접근
dataset = np.array([
[170, 65],
[180, 80],
[160, 55]
])
height = dataset[:,0]
weight = dataset[:,1]
print(height)
print(weight)
# 결과
# [170 180 160]
# [65 80 55]
8. 배열 슬라이싱
arr = np.array([1,2,3,4,5])
print(arr[1:4])
# 결과
# [2 3 4]
2차원 배열 슬라이싱
arr = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])
print(arr[:,1])
# 결과
# [2 5 8]
ai가 추천하는 심화 예제
이미지 데이터 일부 영역 추출
image = np.random.randint(0,255,(100,100))
crop = image[20:50, 30:60]
print(crop.shape)
# 결과
# (30, 30)
9. NumPy 사용 이유
벡터 연산 예제
arr = np.array([1,2,3])
print(arr * 2)
# 결과
# [2 4 6]
ai가 추천하는 심화 예제
유클리드 거리 계산
a = np.array([1,2,3])
b = np.array([4,5,6])
distance = np.sqrt(np.sum((a-b)**2))
print(distance)
# 결과
# 5.196152...
10. 정리
NumPy는 파이썬에서 수치 계산을 수행하기 위한 핵심 라이브러리이다.
핵심 개념
- ndarray (다차원 배열)
- dtype (데이터 타입)
- shape (배열 구조)
- reshape (배열 변형)
- slicing / indexing (데이터 접근)
NumPy는 머신러닝과 데이터 분석의 기반이 되는 라이브러리이기 때문에 배열 구조와 기본 연산 방식을 이해하는 것이 중요하다.
'KDT 수업 > 파이썬 공부' 카테고리의 다른 글
| 내가 보려고 만든 파이토치(Pytorch) 정리 (0) | 2026.03.18 |
|---|---|
| 내가 보려고 만든 MatPlotLib 정리 (0) | 2026.03.12 |
| 내가 보려고 만든 크롤링 정리 (0) | 2026.03.12 |
| 내가 보려고 만든 판다스 정리 (0) | 2026.03.12 |
| 10.22 파이썬 컬렉션 타입 (0) | 2025.10.22 |