[Python] Numpy 소개
2025. 2. 9. 21:59

 

NumPy 개요 및 사용법

1. NumPy란?

NumPy(Numerical Python)는 Python에서 수학적 연산과 다차원 배열 연산을 수행하는 대표적인 라이브러리입니다.

  • 빠르고 효율적인 다차원 배열(ndarray) 연산
  • C 기반 구현으로 높은 성능 제공
  • 벡터화 연산을 통해 반복문 최소화
  • 선형 대수, 난수 생성, 푸리에 변환 등 다양한 기능 포함
  • Pandas, SciPy, PyTorch 등의 여러 라이브러리의 기반 역할

2. NumPy 배열(NDArray)

NumPy의 핵심 데이터 구조는 ndarray (N-dimensional array) 입니다.

(1) 배열 생성

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))

(2) 다차원 배열

arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
print(arr2d.shape)
print(arr2d.ndim)
print(arr2d.dtype)

3. NumPy 주요 기능

(1) 배열 생성 함수

zeros = np.zeros((3, 3))
ones = np.ones((2, 4))
full = np.full((3, 3), 7)
identity = np.eye(4)
print(zeros)
print(ones)
print(full)
print(identity)

(2) 난수 생성

rand_uniform = np.random.rand(3, 3)
rand_normal = np.random.randn(3, 3)
rand_int = np.random.randint(0, 10, (3, 3))
np.random.seed(42)
print(rand_uniform)
print(rand_normal)
print(rand_int)

(3) 배열 연산

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a - b)
print(a * b)
print(a / b)

(4) 행렬 연산

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B)
print(C)
print(A.T)
A_inv = np.linalg.inv(A)
det = np.linalg.det(A)
print(A_inv)
print(det)

(5) 배열 인덱싱 및 슬라이싱

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1])
print(arr[0, :])
print(arr[:, 0:2])

(6) 배열 조건 처리

arr = np.array([1, 2, 3, 4, 5])
print(arr[arr > 2])
arr[arr > 2] = 10
print(arr)

4. NumPy vs Python List 성능 비교

import time
size = 10**6

# Python 리스트 연산 속도 비교
start = time.time()
a_list = list(range(size))
b_list = list(range(size))
c_list = [a + b for a, b in zip(a_list, b_list)]
print("Python 리스트 연산 시간:", time.time() - start)

# NumPy 배열 연산 속도 비교
start = time.time()
a_array = np.arange(size)
b_array = np.arange(size)
c_array = a_array + b_array
print("NumPy 배열 연산 시간:", time.time() - start)

5. NumPy 요약

기능 설명
배열 생성 np.array(), np.zeros(), np.ones(), np.eye()
난수 생성 np.random.rand(), np.random.randint()
배열 연산 +, -, *, /, np.dot()
선형 대수 np.linalg.inv(), np.linalg.det(), A.T
인덱싱 arr[i, j], arr[:, i], Fancy Indexing
조건 필터링 arr[arr > 2]

'[Python] Code' 카테고리의 다른 글

[Python] 자료구조  (0) 2025.02.10
[Python] PyTorch 소개  (0) 2025.02.09
[Python] Einops  (0) 2025.02.09
[Python] Einsum  (0) 2025.02.09