Python으로 데이터 다루기 I - numpy

모듈 불러오기

import numpy as nmp

벡터와 스칼라 사이 연산
벡터의 각 원소에 대해서 스칼라 각각 연산.

x = np.array([1,2,3])
c = 5

x+c
> [6,7,8]

벡터와 벡터 사이 연산
같은 idx의 원소끼리 연산.

y = np.array([1,3,5])
z = np.array([2,9,20])

y+z
> [3,12,25]

y*z
> [2,27,100]

Numpy Array Indexing
x[i, j]로 인덱싱.

x = np.arange(9)
x.reshape((3,3))

x
> [[0,1,2],[3,4,5],[6,7,8]]

x[1,1]
> 4

Example : Linear Algebra with Numpy

#영벡터
np.zeros((3,3))
> [[0,0,0],[0,0,0],[0,0,0]]

#일벡터
np.ones((3,3))
> [[1,1,1],[1,1,1],[1,1,1]]

#대각행렬
np.diag([1,2,5])
> [[1,0,0],[0,2,0],[0,0,5]]

#항등행렬
np.eye(3, dtype=int)
> [[1,0,0],[0,1,0],[0,0,1]]

#행렬곱
X @ Y
X.dot(Y)
  
#트레이스 : sum(elements of main_diagonal)
x = np.arange(1, 10)
x.reshape((3,3))
x
> [[1,2,3],[4,5,6],[7,8,9]]

np.trace(x)
> 15

#행렬식 : determint
np.linalg.det(x)
> 0

#역행렬
y = np.array([[1,4],[2,3]])
y_inv = np.linalg.inv(y)

y_inv
> [[-0.6,0.8],[0.4,-0.2]]

y @ y_inv # 항등행렬에 매우 근사한 값이 return됨.

#고유값
z = np.array([[2,0,-2],[1,1,-2],[0,0,1]])

eig_val, eig_vec = np.linalg.eig(z)

eig_val
> (1,2,1)

eig_vec
> ([[0,0.7071,0.8944],[1,0.7071,0],[0,0,0.4472]])

z @ eig_vec[:, 0]
> (0,1,0)

eig_val[0] * eig_vec[:, 0]
> (0,1,0)

numpy 재밌게 하다, 선형대수 만나서 좌절..
행렬식, 고유값, 고유벡터를 공부해야 한다..

좋은 웹페이지 즐겨찾기