Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 한국의새
- 비둘기목
- AI역량평가
- AI전략게임
- 백로과
- 딥러닝 공부
- 기러기목
- 딱다구리과
- 솔딱새과
- keras
- 참새과
- 비둘기과
- 직박구리과
- 한국의 새
- 참새목
- 맑은소리 스피치학원
- ADsP
- IBK기업은행 인턴
- 흰날개해오라기
- 생일문제
- 오리과
- Python
- python3
- 가마우지과
- 계수정렬
- Birthday paradox
- SimpleCraft
- structured_array
- 딥러닝공부
- django
Archives
- Today
- Total
진박사의 일상
[python] np.dot 할 때 자주 헛갈리는 1D matrix Transpose 문제 본문
파이썬으로 numpy의 dot 연산을 할 때 자주 헛갈리는 부분이 있어서 메모 차원으로 정리해본다
import numpy as np
a = np.array([1,2,3])
b = np.array([1,2])
print(a.shape) #(3,)
print(b.shape) #(2,)
np.dot(a,b) # error
np.dot(a,b.T) #error
가끔씩 (n,1) ・ (1,m) 의 dot product를 해야하는 상황이 발생한다.
그런데 numpy에서는 vector의 transpose의 경우 주의해야 할 점이 있다. (n,m) matrix의 경우 transpose 하면 (m,n) matrix가 나오지만 (n,) 의 vector는 transpose를 해줘도 (n,)이 나오기 떄문이다. 이것은 우연이 아니라 transpose의 경우 차원을 추가해주지 않기 때문이다.
우리의 상식에서는 1차원 vector를 transpose해주면 (1,n) matrix가 나올 것 같지만 실제로는 1차원 vector의 경우 차원이 하나 뿐이기 때문에 transpose를 해줘도 똑같이 1차원인 것이다.
그러므로 이러한 경우 선언할 때부터 1차원 array가 아닌 2차원 array로 선언을 해주거나
print(a[:,None].shape) #(3,1)
print(b[None,:].shape) #(1,2)
print(np.dot(a[:,None],b[None,:]).shape) #(3,2)
이런 식으로 shape를 변환해줘야 한다.
'프로그래밍' 카테고리의 다른 글
[django] 2일차 Hello world, Polls App 만들기 - 1 (0) | 2021.05.07 |
---|---|
[django] 1일차 기본 내용 (0) | 2021.05.05 |
하고 싶은 것들 정리 (0) | 2018.10.26 |
아무것도 없지만 일단.. (0) | 2018.10.25 |
프로그래밍에 대한 내 생각. (0) | 2018.10.25 |