Python에서 Numpy로 행렬 연산하는 방법

Python에서 행렬 연산을 손쉽게 처리하려면 Numpy 라이브러리를 사용하는 것이 가장 일반적입니다. Numpy는 고성능 수치 계산을 위한 패키지로, 다차원 배열 객체(ndarray)와 함께 다양한 선형대수 함수들을 제공합니다. 이번 글에서는 Numpy를 사용한 행렬 생성, 연산, 고유값 계산 등 기본적인 행렬 연산 방법을 예제와 함께 소개합니다.

1. Numpy 설치 및 임포트

먼저 Numpy가 설치되어 있지 않다면 아래 명령어로 설치합니다:

pip install numpy

Python 코드에서 다음과 같이 임포트합니다:

import numpy as np

2. 행렬 생성

2-1. 배열을 직접 입력


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

2-2. 특수 행렬 생성


Z = np.zeros((2, 2))        # 0으로 채워진 2x2 행렬
I = np.eye(3)               # 단위행렬 (3x3)
O = np.ones((2, 3))         # 1로 채워진 2x3 행렬
R = np.random.rand(2, 2)    # 랜덤 실수 행렬

3. 기본 행렬 연산

3-1. 덧셈 / 뺄셈


C = A + B
D = A - B

3-2. 곱셈 (행렬 곱)


E = np.dot(A, B)       # 또는 A @ B

3-3. 전치 (Transpose)


A_T = A.T

3-4. 역행렬


A_inv = np.linalg.inv(A)

3-5. 행렬식 (Determinant)


det_A = np.linalg.det(A)

3-6. 고유값과 고유벡터


eig_vals, eig_vecs = np.linalg.eig(A)

4. 연립방정식 풀이

\( Ax = b \) 형태의 선형 방정식 시스템 해를 구합니다:


A = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])
x = np.linalg.solve(A, b)

5. 특이값 분해 (SVD)


U, S, Vt = np.linalg.svd(A)

6. 응용 팁

  • 브로드캐스팅(Broadcasting): 스칼라 또는 다른 차원 배열과의 연산 자동 지원
  • 형태 확인: A.shape으로 행렬 크기 확인
  • 타입 체크: type(A), A.dtype
  • 복소수 지원: np.array([[1+2j, 3], [4, 5-1j]])

결론

Numpy는 Python에서 행렬 및 선형대수 연산을 직관적이고 효율적으로 수행할 수 있는 핵심 도구입니다.

기본적인 생성, 연산, 고유값 계산, 선형 방정식 풀이 등 대부분의 수학적 처리가 내장 함수로 간편하게 구현되며, 다양한 과학 기술, 데이터 분석, 머신러닝 분야에서 필수적인 라이브러리입니다.

기초적인 사용법부터 차근차근 익히면 복잡한 수치 계산도 Python에서 손쉽게 해결할 수 있습니다.