logo

Python의 NumPy 행렬 곱셈

행렬 곱셈은 두 개의 행렬을 입력으로 사용하고 첫 번째 행렬의 행과 두 번째 행렬의 열을 곱하여 단일 행렬을 생성하는 연산입니다. 첫 번째 행렬의 행 수가 두 번째 행렬의 열 수와 같아야 한다는 점에 유의하세요.

Python의 NumPy 행렬 곱셈

Python에서 NumPy를 사용한 행렬 곱셈 프로세스는 다음과 같이 알려져 있습니다. 벡터화 . 벡터화의 주요 목적은 다음을 제거하거나 줄이는 것입니다. for 루프 우리는 명시적으로 사용하고 있었습니다. 프로그램에서 'for' 루프를 줄임으로써 계산 속도가 빨라집니다. 내장 패키지 NumPy는 조작 및 배열 처리에 사용됩니다.

numpy 행렬 곱셈을 수행할 수 있는 세 가지 방법이 있습니다.

  1. 첫 번째는 행렬의 요소별 곱셈을 수행하는 Multiply() 함수를 사용하는 것입니다.
  2. 두 번째는 두 배열의 행렬 곱을 수행하는 matmul() 함수를 사용하는 것입니다.
  3. 마지막으로 두 배열의 내적을 수행하는 dot() 함수를 사용합니다.

예 1: 요소별 행렬 곱셈

 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.multiply(array1,array2) result 

위의 코드에서

  • 별칭 이름이 np인 numpy를 가져왔습니다.
  • 차원 3의 numpy.array() 함수를 사용하여 array1과 array2를 만들었습니다.
  • 변수 결과를 생성하고 np.multiply() 함수의 반환 값을 할당했습니다.
  • np.multiply()에서 배열 array1과 array2를 모두 전달했습니다.
  • 마지막으로 결과값을 출력해 보았습니다.

출력에는 array1 및 array2 요소 모두의 요소별 곱셈 결과인 3차원 행렬이 표시되었습니다.

산출:

 array([[[ 9, 16, 21], [24, 25, 24], [21, 16, 9]]]) 

예시 2: 매트릭스 제품

 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.matmul(array1,array2) result 

산출:

 array([[[ 30, 24, 18], [ 84, 69, 54], [138, 114, 90]]]) 

위의 코드에서

  • 별칭 이름이 np인 numpy를 가져왔습니다.
  • 차원 3의 numpy.array() 함수를 사용하여 array1과 array2를 만들었습니다.
  • 변수 result를 생성하고 np.matmul() 함수의 반환 값을 할당했습니다.
  • np.matmul()에서 배열 array1과 array2를 모두 전달했습니다.
  • 마지막으로 결과값을 출력해 보았습니다.

출력에는 array1과 array2 요소의 곱인 3차원 행렬이 표시됩니다.

예시 3: 내적

numpy.dot의 사양은 다음과 같습니다.

  • a와 b가 모두 1차원(1차원) 배열인 경우 -> 두 벡터의 내적(복소공액 없음)
  • a와 b가 모두 2차원(2차원) 배열인 경우 -> 행렬 곱셈
  • a 또는 b가 0-D인 경우(스칼라라고도 함) -> numpy.multiply(a, b) 또는 a * b를 사용하여 곱합니다.
  • a가 N차원 배열이고 b가 1차원 배열인 경우 -> a와 b의 마지막 축에 대한 합입니다.
  • a가 N-D 배열이고 b가 M-D 배열인 경우 M>=2 -> a의 마지막 축과 b의 마지막에서 두 번째 축에 대한 합계 곱:
    또한, dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
 import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.dot(array1,array2) result 

위의 코드에서

  • 별칭 이름이 np인 numpy를 가져왔습니다.
  • 차원 3의 numpy.array() 함수를 사용하여 array1과 array2를 만들었습니다.
  • 변수 결과를 생성하고 np.dot() 함수의 반환 값을 할당했습니다.
  • np.dot()에 배열 array1과 array2를 모두 전달했습니다.
  • 마지막으로 결과값을 출력해 보았습니다.

출력에는 array1과 array2 요소의 내적 요소가 포함된 3차원 행렬이 표시되었습니다.

산출:

 array([[[[ 30, 24, 18]], [[ 84, 69, 54]], [[138, 114, 90]]]])