일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 선형대수
- 주식투자
- bioinformatics
- 후기
- endothelial
- 주식
- 티스토리챌린지
- np.trace
- single cell rna sequening
- journal meeting
- scRNASeq
- scanpy
- R
- np.flatten
- 대학생주식
- Preprocessing
- 대학원
- 오블완
- numpy
- single cell rna sequencing
- np.triu
- 연구원
- pcrnaseq
- 대학생재테크
- liver
- 통계학
- 넘파이 매서드
- np.diagflat
- Python
- Tutorial
- Today
- Total
biotechknowledge
[파이썬을 활용한 선형대수학] 행렬 기본 조작 (2) Numpy 패키지 함수 (stack, transpose, property, Norm, dot) 본문
[파이썬을 활용한 선형대수학] 행렬 기본 조작 (2) Numpy 패키지 함수 (stack, transpose, property, Norm, dot)
준2준2 2024. 12. 22. 19:52
https://www.inflearn.com/course/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98%ED%95%99/dashboard
np.hstack() / np.vstack()
1D array 의 stack의 경우 hstack과 vstack 의 결과가 다르다. 매개변수를 tuple 형태로 받는다.
1D,2D vector가 혼합되어 있는겨우는 vstack만 가능하다.
transpose / T method
transpose는 Numpy 객체의 매서드이다. T는 Numpy 객체의 속성이다. 속성(property)는 python 클래스의 속성으로, 함수처럼 호출하지 않고 마치 데이터처럼 접근할 수 있다.
real property / imag property / conjugate method
conjugate은 허수부분 부호를 반전시킨 값을 의미한다.
Scalar multiplication
실수값 X 행렬
Matrix multiplication
행렬 X 행렬
Matrix-vector product
Inner Product (내적)
복소수 벡터의 경우, 일반적인 내적 계산법에 *복소수 켤레* 를 추가한다. 복소수 켤레란 복소수의 허수 부분의 부호를 바꾼 것이다. 실수 벡터를 dot 함수를 사용했을 때 일반적인 내적연산을 따른다. complex 벡터를 dot하면 단순히 두 벡터를 곱해서 더하기 것으로 복소수의 내적의 정의와 다르다.
# 수학적으로 옳은 의미의 복소수벡터의 내적
correct_inner_product = np.dot(np.conjugate(u), v)
Norm
벡터의 norm에는 l1,l2,l-infinite 가 있다. l1-norm은 맨허튼 거리기반으로 벡터 각 성분의 절대값을 더한 값이다. l2-norm은 유클리드 거리기반으로 원점에서 해당 벡터 위치까지의 직선거리이다. l-infinite norm은 벡터 성분 중 절대값이 가장 큰 값이다.
Matrix norm
l1-Matrix 행렬의 열방향으로 가장 큰 합을 구한다. 각각의 성분은 절대값 취하여 더한다. l2-matrix는 행렬의 최대 특이값을 사용한다. 최대 특이값이란 행령 A의 특이값 분해(SVD)에서 가장 큰 값이다. l-infinite matrix 는 각 행의 절대값 합 중에서 가장 큰 값이다.
인덱싱을 할 때 어떻게 방법에 따라 2D array나 1D array로 저장할 수 있다. 1D array의 결과만 봐서는 행을 가져온건지 열을 가져온지 알 수 없다.
A = np.array([
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15],
[-1,-2,-3,-4,-5]
])
v1 = A[:,1]
v2 = A[:,2]
v3 = A[:,3]
B = np.vstack((v1,v2,v3))
mat_vec = np.matmul(B,v1)
A = np.array([
[1,2],
[3,4]
])
# 행렬곱 이용하기
x = np.array([5,6])
x = np.reshape(x,(2,1))
np.matmul(np.matmul(x.T, A), x)
#dot 이용하기
np.dot(x.T, np.dot(A,x))
np.dot은 일반적인 행렬 곱셈이나 벡터 내적을 계산한다. np.vdot은 복소수 배열을 지원하는 함수이다.
특징 | np.dot | np.vdot |
기능 | 벡터 내적, 행렬 곱, 또는 고차원 배열 곱 | 항상 벡터 내적만 수행 |
복소수 지원 여부 | 복소수 계산 시, 켤레 복소수를 사용하지 않음 | 첫 번째 배열의 켤레 복소수를 사용 |
차원 처리 | 차원에 따라 동작이 달라짐 (1D: 내적, 2D: 행렬 곱) | 두 배열을 항상 1D 벡터로 간주 |
적용 대상 | 벡터와 행렬 모두 가능 | 벡터 내적 전용 |
'IT.DT' 카테고리의 다른 글
[파이썬을 활용한 선형대수학] 행렬 기본 조작 (3) Numpy 에서 제공하는 행렬연산 (1) | 2024.12.22 |
---|---|
[파이썬을 활용한 선형대수학] 행렬 기본 조작 (매서드, 함수) (0) | 2024.12.22 |
[파이썬을 활용한 선형대수학] 행렬 및 벡터 표현과 입출력, 넘파이 행렬 생성 매서드 (2) | 2024.12.17 |
Window PowerShell 로 워크스테이션 접속하면 jupyter lab 안 열리는 이유와 해결법 (4) | 2024.11.08 |
리눅스 워크스테이션 로그인 (WSL ubuntu, Windows Shell) (4) | 2024.11.08 |