Python에서 두 배열의 내적(Inner Product)을 계산하려면 numpy.inner() 메서드를 사용합니다. 이 함수는 1차원 배열에 대해서는 벡터의 일반적인 내적을 계산하고, 더 높은 차원의 배열에 대해서는 마지막 축(axis)을 기준으로 곱셈 후 합산(sum product)을 수행합니다.
주요 매개변수는 a와 b, 즉 내적을 계산할 두 벡터입니다. 만약 a와 b가 스칼라가 아니라면, 두 배열의 마지막 차원 크기가 서로 일치해야 합니다.
단계별 진행 과정
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
array() 메서드를 사용해 두 개의 NumPy 배열을 생성합니다. 여기서는 arange()와 reshape()를 조합하여 각각 다른 차원의 배열을 만들어 보겠습니다.
arr1 = np.arange(2).reshape((1,1,2)) arr2 = np.arange(6).reshape((3,2))
생성된 두 배열을 화면에 출력합니다.
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)두 배열의 차원(dimension)을 확인합니다.
print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)두 배열의 형태(shape)도 함께 확인합니다.
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))전체 예제 코드
import numpy as np
# array() 메서드를 사용해 두 개의 NumPy 배열 생성
arr1 = np.arange(2).reshape((1,1,2))
arr2 = np.arange(6).reshape((3,2))
# 배열 출력
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)
# 두 배열의 차원 확인
print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)
# 두 배열의 형태(shape) 확인
print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)
# numpy.inner() 메서드로 두 배열의 내적 계산
# 1차원 배열에서는 일반적인 벡터 내적,
# 고차원 배열에서는 마지막 축을 기준으로 곱셈 후 합산 수행
print("\nResult (Inner Product)...\n",np.inner(arr1, arr2))실행 결과
Array1... [[[0 1]]] Array2... [[0 1] [2 3] [4 5]] Dimensions of Array1... 3 Dimensions of Array2... 2 Shape of Array1... (1, 1, 2) Shape of Array2... (3, 2) Result (Inner Product)... [[[1 3 5]]]
실행 결과를 보면, 첫 번째 배열 arr1의 마지막 축 요소 [0, 1]과 두 번째 배열 arr2의 각 행 [0, 1], [2, 3], [4, 5]가 각각 내적되어 [[[1 3 5]]]라는 결과가 출력됩니다. 이처럼 np.inner()는 마지막 축을 기준으로 연산하기 때문에, 서로 다른 차원의 배열이라도 마지막 차원의 크기만 일치하면 내적을 계산할 수 있습니다.