Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 Numpy를 사용하여 한 줄에 두 개의 행렬 곱하기

<시간/>

행렬 곱셈은 행렬의 각 행과 열의 각 요소를 특정 방식으로 곱하고 더하는 긴 과정입니다. 행렬 곱셈의 경우 첫 번째 행렬의 열 개수는 두 번째 행렬의 행 개수와 같아야 합니다. 결과 행렬은 첫 번째 행렬의 행 개수와 두 번째 행렬의 열 개수를 가집니다.

더 작은 행렬의 경우 중첩 for 루프를 설계하고 결과를 찾을 수 있습니다. 더 큰 행렬의 경우 이 문제를 해결하기 위해 Python에 내장된 기능이 필요합니다. 아래에서 두 가지 접근 방식을 모두 살펴보겠습니다.

for 루프 사용

차원 2x3 및 3x2(행 x 열)의 두 행렬을 사용합니다. 행렬 곱의 결과는 2x2 행렬입니다. A의 열과 B의 행을 통과하고 해당 행과 열에 있는 값의 곱을 추가하도록 설계된 중첩 for 루프가 있습니다.

예시

#matrix A with 2 rows
A = ([5,10,15],[20,25,30])

#matrix B with 2 columns
B = ([4,8],[12,10],[14,16])

result = [[0 for x in range(2)] for y in range(2)]

for i in range(len(A)):
   # iterate through columns of A
   for j in range(len(B[0])):
      # iterate through rows of B
      for k in range(len(B)):
         result[i][j] += A[i][k] * B[k][j]
for r in result:
   print(r)

출력

위의 코드를 실행하면 다음과 같은 결과가 나타납니다.

[350, 380]
[800, 890]

Numpy 사용

Numpy에는 행렬 곱셈을 수행하는 dot라는 내장 함수가 있습니다. 프로그램의 라인 수가 매우 줄어들고 구문도 매우 간단합니다.

예시

import numpy as np

#matrix A
matrix_A = ([5,10,15],[20,25,30])

#matrix B
matrix_B = ([4,8],[12,10],[14,16])
result = np.dot(matrix_A,matrix_B)

# Result
print(result)

출력

위의 코드를 실행하면 다음과 같은 결과가 나타납니다.

[[350 380]
[800 890]]