Python 활용하기

행렬의 곱셈

swwho 2023. 11. 6. 15:12
728x90
반응형

계산 방법 1

  • mat1이 n행 m열, mat2이 p행 q열
  • 행렬의 곱셈 연산은 3중 for문으로 해결할 수 있다.
result = [[0] * n for _ in range(n)]

for i in range(n):
    for j in range(q):
        for k in range(m):
            result[i][j] += mat1[i][k] * mat2[k][j]

 


계산 방법 2

  • *는 unpacking을 수행한다. 따라서 unpacking후 zip을 수행하면 행과 열을 바꿀 수 있다.
  • mat2의 행과 열을 바꾼 후에는, 두 리스트의 곱셈과 같은 연산 과정이다. 
result = []

for mat1 in a:
    tmp = []
    for mat2 in list(zip(*b)):
        tmp.append(sum([x*y for x, y in zip(mat1, mat2)]))
    result.append(tmp)