Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python NumPy로 두 다차원 배열의 내적(Inner Product) 구하기

개요

Python에서 두 개의 다차원 배열의 내적(Inner Product)을 구하려면 numpy.inner() 메서드를 사용합니다. 1차원 배열에서는 일반적인 벡터 내적을 계산하며, 그보다 높은 차원의 배열에서는 마지막 축(last axes)을 기준으로 곱셈과 합산을 수행합니다.

이 메서드의 주요 매개변수는 두 벡터인 ab입니다. 만약 a와 b가 스칼라가 아니라면, 두 배열의 마지막 차원 크기가 서로 일치해야 합니다.

단계별 진행 방법

1단계: 필요한 라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np

2단계: 2차원 배열 생성

array() 메서드를 사용하여 두 개의 NumPy 2차원 배열을 생성합니다.

arr1 = np.array([[5, 10], [15, 20]])
arr2 = np.array([[6, 12], [18, 24]])

3단계: 배열 출력

생성한 배열을 화면에 표시합니다.

print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

4단계: 배열의 차원 확인

두 배열의 차원(ndim)을 확인합니다.

print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

5단계: 배열의 형상 확인

두 배열의 형상(shape)을 확인합니다.

print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

6단계: 내적 계산

numpy.inner() 메서드를 사용하여 두 다차원 배열의 내적을 계산합니다.

print("\nResult (Inner Product)...\n",np.inner(arr1, arr2))

전체 예제 코드

import numpy as np

# array() 메서드를 사용해 두 개의 NumPy 2차원 배열 생성
arr1 = np.array([[5, 10], [15, 20]])
arr2 = np.array([[6, 12], [18, 24]])

# 배열 출력
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

# 두 배열의 차원 확인
print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

# 두 배열의 형상 확인
print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

# numpy.inner() 메서드로 두 다차원 배열의 내적 계산
print("\nResult (Inner Product)...\n",np.inner(arr1, arr2))

실행 결과

Array1...
[[ 5 10]
[15 20]]

Array2...
[[ 6 12]
[18 24]]

Dimensions of Array1...
2

Dimensions of Array2...
2

Shape of Array1...
(2, 2)

Shape of Array2...
(2, 2)

Result (Inner Product)...
[[150 330]
[330 750]]

결과 해석

내적은 각 배열의 마지막 축을 기준으로 대응되는 요소끼리 곱한 후 모두 더하는 방식으로 계산됩니다. 위 결과의 계산 과정은 다음과 같습니다.

  • 결과[0][0] = 150: arr1의 첫 번째 행 [5, 10]과 arr2의 첫 번째 행 [6, 12]의 내적 → (5×6) + (10×12) = 30 + 120 = 150
  • 결과[0][1] = 330: arr1의 첫 번째 행 [5, 10]과 arr2의 두 번째 행 [18, 24]의 내적 → (5×18) + (10×24) = 90 + 240 = 330
  • 결과[1][0] = 330: arr1의 두 번째 행 [15, 20]과 arr2의 첫 번째 행 [6, 12]의 내적 → (15×6) + (20×12) = 90 + 240 = 330
  • 결과[1][1] = 750: arr1의 두 번째 행 [15, 20]과 arr2의 두 번째 행 [18, 24]의 내적 → (15×18) + (20×24) = 270 + 480 = 750

이처럼 numpy.inner()는 행렬 곱(np.dot)과 달리 각 행 벡터끼리의 내적을 계산한다는 점을 기억하면 다차원 배열 연산을 더욱 정확하게 이해할 수 있습니다.