앞서 Python 외부 라이브러리 NumPy를 이용한 벡터 연산을 배웠습니다. 이번에는 python에서 행렬을 생성하고 기본적인 연산을 해보겠습니다.
1. Numpy 배열(array)을 이용하여 행렬 생성하기
벡터와 마찬가지로 먼저 python의 외부 라이브러리인 NumPy를 import를 해야 합니다.
NumPy 설치 방법은 아래 링크를 참조하세요.
아주 쉬운 Python 설치 및 시작 (윈도우에서 PIP 사용)
그리고 다음과 같이 배열을 사용하여 행렬을 생성할 수 있습니다.
import numpy as np
matrix_A = np.array([[1, 2], [3, 4]])
print(matrix_A.shape)
여기서 shape 은 배열의 형태를 알려주는 특성입니다.
위 코드에서는 (2, 2)를 출력하는데, matrix_A가 2 × 2 행렬임을 알려줍니다.
2. 행렬들의 덧셈과 곱
먼저 두 행렬의 덧셈은 두 행렬의 크기가 같아야 합니다.
예를 들어, 만약 두 행렬 $A$와 $B$가 있을 때 $A$와 $B$가 둘 다 2 × 2이면 덧셈이 가능합니다.
덧셈은 두 행렬의 같은 위치의 성분들끼리 더하면 되는데,
python에서는 그냥 두 배열을 더해주면 행렬의 덧셈이 됩니다.
두 행렬 $A$와 $B$의 곱셈 AB에서는
$AB$의 $i$행 $j$열 원소 $(AB)_{ij}$ = ($A$의 $i$행)·($B$의 $j$열)입니다. (내적)
이 연산은 NumPy의 matmul() 메소드를 사용하면 됩니다.
*그냥 두 행렬을 곱하기 기호 *를 써서 곱하면 전혀 다른 결과가 나오니 주의하시기 바랍니다.
다음 예는 두 행렬을 생성하고 덧셈과 곱의 연산을 하여 결과를 출력하는 코드입니다.
import numpy as np
matrix_A = np.array([[1, 2], [3, 4]])
matrix_B = np.array([[1, 1], [1, 1]])
print(matrix_A + matrix_B)
print(np.matmul(matrix_A, matrix_B))
3. 역행렬 구하기: linalg.inv() 메소드
다음은 행렬의 역행렬을 구해보겠습니다.
NumPy 모듈에는 역행렬을 계산하는 linalg.inv() 메소드가 있습니다.
이 메소드를 사용하면 원하는 행렬의 역행렬을 구할 수 있습니다.
만약 행렬의 역행렬이 없으면
“numpy.linalg.LinAlgError: Singular matrix”와 같은 에러 메시지를 보게 됩니다.
다음은 역행렬을 구하는 예입니다.
import numpy as np
matrix_A = np.array([[1, 0], [-4, 1]])
print(np.linalg.inv(matrix_A))
'Python > python 응용: 수학 및 과학' 카테고리의 다른 글
Numpy 복소수 계산하기: 근의 공식 (0) | 2022.12.21 |
---|---|
Python matplotlib 그래프 그리기 (0) | 2022.12.07 |
Python NumPy 행렬의 원소 접근하여 작업하기: trace (0) | 2022.12.06 |
Python 브로드캐스트: 크기가 다른 배열의 곱셈 (0) | 2022.12.06 |
Python과 선형대수: NumPy를 이용한 벡터 연산 (0) | 2022.12.05 |
댓글