NumPy 선형대수 기초: 역행렬, 전치행렬, 행렬식
NumPy는 파이썬에서 과학 계산 및 데이터 분석을 위한 강력한 라이브러리입니다. 이 포스팅에서는 NumPy의 선형대수 기능 중에서도 역행렬, 전치행렬, 행렬식을 다룹니다. 각 개념에 대해 설명하고, 코드를 통해 예제를 살펴보겠습니다.
1. 역행렬 (Inverse Matrix)
역행렬은 어떤 정사각행렬 ( A )에 대해 다음을 만족하는 행렬 ( B )를 의미합니다:
[ A \times B = B \times A = I ]
여기서 ( I )는 단위행렬(Identity Matrix)입니다. 역행렬은 행렬이 정칙(Determinant가 0이 아님)일 때만 존재합니다.
NumPy에서의 역행렬 계산
NumPy의 numpy.linalg.inv
함수를 사용하면 역행렬을 쉽게 구할 수 있습니다.
import numpy as np
# 정사각행렬 정의
A = np.array([[1, 2], [3, 4]])
# 역행렬 계산
A_inv = np.linalg.inv(A)
print("원본 행렬:")
print(A)
print("역행렬:")
print(A_inv)
# 확인: A * A_inv는 단위행렬
I = np.dot(A, A_inv)
print("단위행렬 확인:")
print(I)
실행 결과
원본 행렬:
[[1 2]
[3 4]]
역행렬:
[[-2. 1. ]
[ 1.5 -0.5]]
단위행렬 확인:
[[1. 0.]
[0. 1.]]
주의사항
- 역행렬은 행렬식이 0이 아닐 때만 계산할 수 있습니다. 만약 행렬식이 0이면
LinAlgError
가 발생합니다.
2. 전치행렬 (Transpose Matrix)
전치행렬은 행과 열을 뒤바꾼 행렬을 의미합니다. ( A )의 전치행렬 ( A^T )는 다음과 같이 정의됩니다:
[ A^T[i, j] = A[j, i] ]
NumPy에서의 전치행렬 계산
NumPy는 배열 객체의 .T
속성을 사용하여 전치행렬을 계산합니다.
# 행렬 정의
B = np.array([[1, 2, 3], [4, 5, 6]])
# 전치행렬 계산
B_T = B.T
print("원본 행렬:")
print(B)
print("전치행렬:")
print(B_T)
실행 결과
원본 행렬:
[[1 2 3]
[4 5 6]]
전치행렬:
[[1 4]
[2 5]
[3 6]]
3. 행렬식 (Determinant)
행렬식은 정사각행렬에서 계산되는 값으로, 행렬의 여러 성질을 나타냅니다. 예를 들어, 행렬식이 0이면 해당 행렬은 역행렬이 존재하지 않습니다.
NumPy에서의 행렬식 계산
NumPy의 numpy.linalg.det
함수를 사용하여 행렬식을 계산할 수 있습니다.
# 행렬 정의
C = np.array([[1, 2], [3, 4]])
# 행렬식 계산
C_det = np.linalg.det(C)
print("행렬:")
print(C)
print("행렬식:")
print(C_det)
실행 결과
행렬:
[[1 2]
[3 4]]
행렬식:
-2.0000000000000004
부동소수점 오차
행렬식 계산 결과는 부동소수점 연산의 특성상 약간의 오차가 있을 수 있습니다.
4. 세 가지 개념을 활용한 종합 예제
다음은 역행렬, 전치행렬, 행렬식을 함께 사용하는 예제입니다:
# 3x3 행렬 정의
D = np.array([[2, 4, 6], [1, 3, 5], [7, 8, 9]])
# 역행렬 계산 (가능한 경우에만)
try:
D_inv = np.linalg.inv(D)
print("역행렬:")
print(D_inv)
except np.linalg.LinAlgError:
print("역행렬을 계산할 수 없습니다.")
# 전치행렬 계산
D_T = D.T
print("전치행렬:")
print(D_T)
# 행렬식 계산
D_det = np.linalg.det(D)
print("행렬식:")
print(D_det)
실행 결과
역행렬을 계산할 수 없습니다.
전치행렬:
[[2 1 7]
[4 3 8]
[6 5 9]]
행렬식:
0.0
해석
- 이 행렬은 행렬식이 0이므로 역행렬이 존재하지 않습니다.
- 전치행렬은 정상적으로 계산됩니다.
결론
이 포스팅에서는 NumPy를 활용하여 역행렬, 전치행렬, 행렬식을 계산하는 방법을 살펴보았습니다. 선형대수는 데이터 과학, 기계 학습, 물리 시뮬레이션 등 다양한 분야에서 중요한 역할을 합니다. NumPy를 사용하면 이러한 계산을 빠르고 효율적으로 수행할 수 있습니다.
이제 여러분도 NumPy를 사용해 직접 다양한 선형대수 계산을 시도해 보세요!
'Python > NumPy' 카테고리의 다른 글
NumPy 데이터 분석: 조건에 따른 데이터 선택 (Boolean Indexing) (0) | 2025.10.16 |
---|---|
NumPy로 배우는 선형대수: 고유값과 고유벡터 (0) | 2025.10.15 |
NumPy 선형대수: 행렬 곱셈 (dot, matmul) (0) | 2025.10.13 |
NumPy로 배우는 선형대수 기초 (0) | 2025.10.12 |
NumPy로 분포별 난수 생성하기 (0) | 2025.10.11 |