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]]