티스토리 뷰
Project : Py_EX
Python file : EX03_arraycal.py (이어서)
Module : Numpy (as np)
IDE : PyCharm [설치방법]
이전 글 참조
이전 글에 이어서 Python에서 행렬을 다루는 법을 조금 더 공부해보자. 나중에 꼭 필요하다. 그러한 차원에서 numpy.array (사용은 np.array 로 한다)의 능력을 조금 더 알아보려 한다.
여기서는 "행렬" 하면 생각나는
- 행렬식 (Determinant)
- 역행렬 (Inverse matrix)
- 전치행렬 (Transpose matrix)
- 단위행렬 (Identity matrix)
을 생성 및 계산 해보자.
## 행렬식 (Determinant)
# np.linalg.det()
선형대수학에서, 행렬식(行列式, 영어: determinant 디터미넌트)은 정사각 행렬에 스칼라를 대응시키는 함수의 하나이다. 실수 정사각 행렬의 행렬식의 절댓값은 그 행렬이 나타내는 선형 변환이 초부피를 확대시키는 배수를 나타내며, 행렬식의 부호는 방향 보존 여부를 나타낸다. * 위키백과
실습을 해보기 위해 정사각 행렬을 만들어 보자.
2x2 행렬 정도는 암산으로 계산이 가능하다.
Python의 NumPy에서 이 계산을 하기 위해서는 선형대수(Linear Algebra) 함수 numpy.linalg 를 사용해야 한다. NumPy의 linalg 함수에는 행렬식을 비롯해서 행렬 및 벡터의 곱, 고유값, 조금 후 해볼 역행렬 등의 많은 선형대수 함수가 내장되어 있다. 여기서는 행렬식 함수인 np.linalg.det 를 사용해보자.
import numpy as np
d_array = np.array([[2, 5], [1, 3]]) # numpy.array를 사용하여 2x2 행렬 생성
d_array_det = np.linalg.det(d_array) # d_array 행렬의 determinant 연산
print(d_array_det) # determinant 연산 결과 출력
결과창
1.0 |
결과는 위에서 계산한 결과와 동일한 결과를 출력해 준다. 2x2 행렬정도는 손계산으로 쉽게 계산 되겠지만 더 고차원의 행렬이 되면 Python의 힘을 빌리자.
그리고 numpy.linalg 의 함수들이 어떤 것들이 있는지 더 알고싶다면 링크(numpy.linalg 매뉴얼)를 참고하자. 필요할 때 그때그때 찾아서 사용해 보면 되겠다.
## 역행렬
# np.linalg.inv()
선형대수학에서, 가역 행렬(可逆行列, 영어: invertible matrix) 또는 정칙 행렬(正則行列, 영어: regular matrix) 또는 비특이 행렬(非特異行列, 영어: non-singular matrix)은 그와 곱한 결과가 단위 행렬인 행렬을 갖는 행렬이다. 이를 그 행렬의 역행렬(逆行列, 영어: inverse matrix)이라고 한다. * 위키백과
위에서 만들었던 2x2 정사각 행렬의 역행렬을 구해보자. 공식을 모르겠으면 바로 위의 위키백과 링크를 타고들어가서 살짝 보고오자.
이번에는 Python에서 해보자.
import numpy as np
d_array = np.array([[2, 5], [1, 3]]) # numpy.array를 사용하여 2x2 행렬 생성
d_array_inv = np.linalg.inv(d_array) # d_array 행렬의 역행렬 연산
print(d_array_inv) # 역행렬 연산 결과 출력
결과창
[[ 3. -5.] [-1. 2.]] |
당연히 동일한 결과를 출력해 준다.
## 전치행렬
# np.transpose() or a.transpose() or a.T
선형대수학에서, 전치 행렬(轉置行列, 영어: transposed matrix)은 행과 열을 교환하여 얻는 행렬이다. * 위키백과
Python에서 전치행렬은 아주 쉽게 구할 수 있는데, 세 가지 방법이나 있다.
import numpy as np
d_array = np.array([[2, 5], [1, 3]]) # numpy.array를 사용하여 2x2 행렬 생성
print(np.transpose(d_array)) # np.transpose()를 이용한 전치행렬 출력
print(d_array.transpose()) # a.transpose()를 이용한 전치행렬 출력
print(d_array.T) # a.T 를 이용한 전치행렬 출력
결과창
[[2 1] [5 3]] [[2 1] [5 3]] [[2 1] [5 3]] |
세 방법 모두 같은 결과를 출력해준다. NumPy의 함수인데 앞에 앞에 모듈이름 np를 안붙여도 작동한다. 신기하다.
## 단위행렬
# np.eye()
선형대수학에서, 단위 행렬(영어: identity matrix)은 주대각선의 원소가 모두 1이며 나머지 원소는 모두 0인 정사각 행렬이다. * 위키백과
3x3의 단위행렬을 만들어 보자.
Python에서는 np.eye() 를 사용하면 된다.
import numpy as np
print(np.eye(3)) # 3x3 단위행렬 생성
결과창
[[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] |
'Engineering > Python' 카테고리의 다른 글
[Python] 파이참(PyCharm)에서 "Python 콘솔에서 실행" 해제하기 (0) | 2020.10.12 |
---|---|
[Python] 파이참(PyCharm)에서 PyQt5 설치하고 Qt Designer 실행해보기 (0) | 2020.10.09 |
[Python] 행렬 만들고 연산까지 해보기1 (1) | 2020.09.14 |
[Python] pyplot 그래프 편집하기 (0) | 2020.09.06 |
[Python] 사인함수 그래프 그려보기 (0) | 2020.09.05 |
- Total
- Today
- Yesterday
- 그래프
- 기존 콘솔
- Console 삭제
- pyplot
- qt designer
- 행렬
- 맛집
- linalg
- 갤럭시 워치 액티브2
- Sine
- 갤럭시 워치
- 파이참
- 파이썬
- 행렬의 곱
- Python 콘솔에서 실행
- sin
- 단위행렬
- Python
- 배곧
- PI
- pyQT5
- 콘솔
- 모듈
- 액티브2
- PyCharm
- numpy
- 터미널 실행
- 언어팩
- 한글
- 콘솔창 삭제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |