Python에서 배열과 스칼라의 내적(Inner Product)을 구하려면 numpy.inner() 메서드를 사용합니다. 이 함수는 1차원 배열에서는 일반적인 벡터의 내적을 계산하고, 그보다 높은 차원에서는 마지막 축을 기준으로 곱셈 후 합산(sum product)한 결과를 반환합니다.
주요 매개변수는 두 개입니다. 첫 번째는 배열 a, 두 번째는 배열 또는 스칼라 b입니다. 만약 a와 b가 모두 비스칼라(nonscalar)라면, 두 배열의 마지막 차원 크기가 서로 일치해야 합니다.
단계별 진행 방법
1단계: 필수 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
2단계: 배열 생성
numpy.eye()를 사용하여 배열을 생성합니다. 이 메서드는 대각선에는 1이 있고 나머지 위치에는 0이 채워진 2차원 단위 행렬(identity matrix)을 반환합니다.
arr = np.eye(5)
3단계: 스칼라 값 정의
내적에 사용할 스칼라 값을 정의합니다.
val = 2
4단계: 배열 속성 확인
생성된 배열의 데이터 타입(dtype)을 확인할 수 있습니다.
print("\nDatatype of Array...\n", arr.dtype)배열의 차원 수(ndim)를 확인합니다.
print("\nDimensions of Array...\n", arr.ndim)배열의 형태(shape)를 확인합니다.
print("\nShape of Array...\n", arr.shape)5단계: 외적(Outer Product) 계산 (참고)
참고로, 배열과 스칼라의 외적을 구하려면 numpy.outer() 메서드를 사용합니다.
print("\nResult (Outer Product)...\n", np.outer(arr, val))6단계: 내적(Inner Product) 계산
배열과 스칼라의 내적을 구하려면 numpy.inner() 메서드를 사용합니다.
print("\nResult (Inner Product)...\n", np.inner(arr, val))전체 예제 코드
import numpy as np
# numpy.eye()로 배열 생성: 대각선은 1, 나머지는 0인 2차원 배열 반환
arr = np.eye(5)
# 스칼라 값
val = 2
# 배열 출력
print("Array...\n", arr)
# 데이터 타입 확인
print("\nDatatype of Array...\n", arr.dtype)
# 차원 확인
print("\nDimensions of Array...\n", arr.ndim)
# 형태 확인
print("\nShape of Array...\n", arr.shape)
# numpy.inner()로 배열과 스칼라의 내적 계산
print("\nResult (Inner Product)...\n", np.inner(arr, val))실행 결과
Array... [[1. 0. 0. 0. 0.] [0. 1. 0. 0. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 0. 0. 1.]] Datatype of Array... float64 Dimensions of Array... 2 Shape of Array... (5, 5) Result (Inner Product)... [[2. 0. 0. 0. 0.] [0. 2. 0. 0. 0.] [0. 0. 2. 0. 0.] [0. 0. 0. 2. 0.] [0. 0. 0. 0. 2.]]
결과 해석
실행 결과를 보면 np.eye(5)로 생성한 5×5 단위 행렬에 스칼라 값 2를 내적하면, 각 요소가 2배가 된 대각 행렬이 출력됩니다. 즉, 배열과 스칼라의 내적은 배열의 각 요소에 해당 스칼라를 곱한 것과 같습니다. 이는 스칼라가 모든 원소와 독립적으로 연산되기 때문이며, 배열 간의 내적(벡터 내적)과는 동작 방식이 다르다는 점을 기억해 두면 유용합니다.