파이썬3 노트

numpy 공부: [선형대수]

Jonchann 2018. 8. 10. 15:39

이 게시물은 SciPy.org의 퀵 튜토리얼에 나온 선형대수 모듈을 필기한 것이다.

베이직 튜토리얼을 읽다가 더 나오면 더 추가해야지.



먼저 a, b, y라는 행렬이 아래와 같다고 하자.

import numpy as np
a = np.array([[1.0, 2.0],

[3.0, 4.0]])

b = np.array([[2.0, 2.0],           [3.0, 3.0]]) y = np.array([[5.0],

[7.0]])


1. x.transpose()

전치행렬을 구하기 위한 함수이다.

print(a.transpose())
# [[1. 3.]
#  [2. 4.]]


2. np.linalg.inv(x)

역행렬을 구하기 위한 함수이다.

print(np.linalg.inv(a))
# [[-2.   1. ]
#  [ 1.5 -0.5]]


3. np.eye(n)

단위행렬을 만드는 함수이다.

e = np.eye(3)
print(e)
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]


4. @

행렬 @ 행렬 로 내적을 구할 수 있다.

print(a@b)
# [[ 8.  8.]
#  [18. 18.]]


5. np.trace(a)

대각선 요소(왼쪽 위에서 오른쪽 아래의 방향에 있는 대각선 요소)의 합을 구할 수 있다.

print(np.trace(a)) #5.0


6. np.linalg.solve(a, b)

A가 정사각 행렬일 때, Ax = b를 만족하는 x를 구하는 함수이다.

print(np.linalg.solve(a, b))
# [[-1.  -1. ]
#  [ 1.5  1.5]]
print(np.linalg.solve(a, y))
# [[-3.]
#  [ 4.]]


7. np.linalg.eig(e)

정사각 행렬의 고유 값과 고유벡터를 계산한다. 정사각이 아니면 에러가 난다.

print(np.linalg.eig(a))
# (array([-0.37228132,  5.37228132]), array([[-0.82456484, -0.41597356],
#        [ 0.56576746, -0.90937671]]))

print(np.linalg.eig(b))
# (array([0., 5.]), array([[-0.70710678, -0.5547002 ],
#        [ 0.70710678, -0.83205029]]))

print(np.linalg.eig(e))
# (array([1., 1.]), array([[1., 0.],
#        [0., 1.]]))