개요
Python에서 두 개의 다차원 배열의 내적(Inner Product)을 구하려면 numpy.inner() 메서드를 사용합니다. 1차원 배열에서는 일반적인 벡터 내적을 계산하며, 그보다 높은 차원의 배열에서는 마지막 축(last axes)을 기준으로 곱셈과 합산을 수행합니다.
이 메서드의 주요 매개변수는 두 벡터인 a와 b입니다. 만약 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)과 달리 각 행 벡터끼리의 내적을 계산한다는 점을 기억하면 다차원 배열 연산을 더욱 정확하게 이해할 수 있습니다.