import numpy as np
test_array = np.array([1,4,5,8], float)
np.array(test_matrix).reshape(-1,2).shpae
#size를 기반으로 row 개수 선정(-1)
#위 예시의 경우 test_matrix가 2*4 라고 할때, ?,2로 바꿔주려고 -1이 4가 자동으로 적용
np.arange(10)
# array([0,1,2,3,4,5,6,7,8,9])
np.arange(0,5,0.5) # floating point도 표시가능함
# array([0., 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5])
np.zeros(shape=(10,), dtype=np.int8)
test_mat = np.arange(30).reshape(5,6)
np.ones_like(test_matrix)
np.identity(n=3, dtype=np.int8)
# array([[1,0,0],[0,1,0],[0,0,1]], dtype=int8)
np.eye(3, 5, k=2)
# array([[0., 0., 1., 0., 0.],
# [0., 0., 0., 1., 0.],
# [0., 0., 0., 0., 1.]])
np.random.uniform() # 균등분포
np.random.normal() # 정규분포
a = np.array([1,2,3])
b = np.array([2,3,4])
np.vstack((a,b)) # array([[1,2,3],[2,3,4]])
np.concatenate((a,b), axis = 0) # array([[1,2,3],[2,3,4]])
a = np.array([[1],[2],[3]])
b = np.array([[2],[3],[4]])
np.hstack((a,b)) # array([[1,2],[2,3],[3,4]])
np.all
np.any
np.where(a>0, 3, 2) #where(condition, True, False)
# array([3, 3, 2])
a = np.arange(10)
np.where(a>5) # Index값 반환
a = np.array([1, np.NaN, np.Inf], float)
np.isnan(a) # array([False, True, False], dtype=bool)
np.isfinite(a)
#array([True, False, False], dtype=bool)
test_array = np.array([1, 4, 0, 2, 3, 8, 9, 7], float)
test_array > 3
# array([False, True, False, False, False, True, True, True], dtype=bool)
a = np.array([2, 4, 6, 8], float)
b = np.array([0, 0, 1, 3, 2, 1], int) # 반드시 int로 선언
a[b] # backet index, b 배열의 값을 index로 하여 a의 값들을 추출함
# array([2., 2., 4., 8., 6., 4.])
a.take(b) #take함수 : backet index와 같은 효과
벡터의 노름(norm)기호 : ||a||
은 원점에서부터의 거리
임의의 d차원에 대해 성립
L1-노름 : 각 성분의 변화량의 절대값을 모두 더한다.
L2-노름 : 피타고라스 정리를 이용해 유클리드 거리를 계산. np.linalg.norm
노름의 종류에 따라 기하학적 성질이 달라진다.
( 머신러닝에선 각 성질들이 필요할 때가 있으므로 둘다 사용 )
L1, L2-노름을 이용해 두 벡터 사이의 거리를 계산, 벡터의 뺄셈 이용
두 벡터 사이의 각도 계산, 제2 코사인 법칙, L2-노름에서만 가능하다.
( 분자를 쉽게 계산하는 방법이 내적 )
||x||cosθ
가 된다.||y||
만큼 조정한 값 (<x, y> = ||x||2 ||y||2 cosθ
)@
연산을 사용 ex. X @ Y
-np.linalg.pinv
를 이용하면 연립방정식의 해를 구할 수 있다.