Py 숫자 행렬곱 - sonkoni/Koni-Wiki GitHub Wiki
# 행렬곱셈 연산자는 파이썬 3.5 부터 사용 가능
# numpy 를 위해 존재함
# 곱셈 결과 나오는 행렬의 크기는 (앞 행렬의 행의 수) × (뒤 행렬의 열의 수)
import numpy as np
a = np.array([1, 2, 3], [4, 5, 6], [7, 8, 9](/sonkoni/Koni-Wiki/wiki/1,-2,-3],-[4,-5,-6],-[7,-8,-9)) # 3x3 행렬
b = np.array([1, 2, 3], [4, 5, 6], [7, 8, 9](/sonkoni/Koni-Wiki/wiki/1,-2,-3],-[4,-5,-6],-[7,-8,-9)) # 3x3 행렬
print(a @ b) #행렬곱
## [[ 30 36 42]
## [ 66 81 96]
## [102 126 150]]
c = np.array([1, 2], [3, 4](/sonkoni/Koni-Wiki/wiki/1,-2],-[3,-4)) # 2x2 행렬
d = np.array([5, 6], [7, 8](/sonkoni/Koni-Wiki/wiki/5,-6],-[7,-8)) # 2x2 행렬
print(c @ d) #행렬곱
## [[19 22]
## [43 50]]
f = np.array([1j, 2j], [3j, 4j](/sonkoni/Koni-Wiki/wiki/1j,-2j],-[3j,-4j)) # 2x2 행렬
e = np.array([5j, 6j], [7j, 8j](/sonkoni/Koni-Wiki/wiki/5j,-6j],-[7j,-8j)) # 2x2 행렬
print(e @ f) #행렬곱
실제 사례
== 가중치 == == 학생별 점수 ==
우등반 수학반 국어 수학 영어
국 3 1 김 80 90 60
수 3 8 이 75 80 90
영 4 1 박 90 95 65
최 99 70 70
80, 90, 60
75, 80, 90
90, 95, 65
99, 70, 70
----|------------
3, 1|왼쪽세로*오른쪽가로 AB = (80⋅3+90⋅3+60⋅4, 80⋅1+90⋅8+60⋅1
3, 8|형태로 연산하여 75⋅3+80⋅3+90⋅4, 75⋅1+80⋅8+90⋅1
4, 1|더한다. 90⋅3+95⋅3+65⋅4, 90⋅1+95⋅8+65⋅1
99⋅3+70⋅3+70⋅4, 99⋅1+70⋅8+70⋅1)
우등반 수학반
김 750 860
이 825 805
박 815 915
최 787 729
import numpy as np
aa = np.array([80, 90, 60], [75, 80, 90], [90, 95, 65], [99, 70, 70](/sonkoni/Koni-Wiki/wiki/80,-90,-60],-[75,-80,-90],-[90,-95,-65],-[99,-70,-70)) # 3x4
bb = np.array([3, 1], [3, 8], [4, 1](/sonkoni/Koni-Wiki/wiki/3,-1],-[3,-8],-[4,-1)) # 2x3
print(aa @ bb) #행렬곱
## [[750 860]
## [825 805]
## [815 915]
## [787 729]]