Python에서 두 벡터의 내적(dot product)을 반환하려면 numpy.vdot() 메서드를 사용하면 됩니다. vdot(a, b) 함수는 복소수를 일반적인 dot(a, b)와는 다른 방식으로 처리한다는 점이 특징입니다. 첫 번째 인수가 복소수라면, 내적을 계산할 때 해당 인수의 켤레복소수(complex conjugate)가 사용됩니다.
또한 vdot은 다차원 배열도 dot과 다르게 처리합니다. 행렬 곱(matrix product)을 수행하는 대신, 입력 배열을 먼저 1차원 벡터로 평탄화(flatten)한 뒤 내적을 계산합니다. 따라서 이 함수는 오직 벡터에만 사용해야 합니다.
이 메서드는 a와 b의 내적을 반환하며, 반환값의 자료형은 a와 b의 타입에 따라 int, float 또는 complex가 될 수 있습니다. 첫 번째 매개변수는 a이며, a가 복소수인 경우 내적 계산 전에 켤레복소수가 적용됩니다. 두 번째 매개변수 b는 내적 계산에 사용되는 두 번째 벡터입니다.
단계별 진행 과정
1. 필요한 라이브러리 임포트
import numpy as np
2. array() 메서드로 1차원 배열 두 개 생성
arr1 = np.array([2+3j, 5+6j])
arr2 = np.array([9+10j, 11+12j])
3. 배열 출력하기
print("Array1...\n", arr1)
print("\nArray2...\n", arr2)4. 두 배열의 차원 확인하기
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.vdot()으로 내적 계산하기
print("\nResult...\n", np.vdot(arr1, arr2))전체 예제 코드
import numpy as np
# array() 메서드로 1차원 배열 두 개 생성
arr1 = np.array([2+3j, 5+6j])
arr2 = np.array([9+10j, 11+12j])
# 배열 출력
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.vdot() 메서드로 두 벡터의 내적 계산
print("\nResult...\n", np.vdot(arr1, arr2))
실행 결과
Array1...
[2.+3.j 5.+6.j]
Array2...
[ 9.+10.j 11.+12.j]
Dimensions of Array1...
1
Dimensions of Array2...
1
Shape of Array1...
(2,)
Shape of Array2...
(2,)
Result...
(175-13j)
위 실행 결과에서 볼 수 있듯이, 복소수 벡터 [2+3j, 5+6j]와 [9+10j, 11+12j]의 내적은 (175-13j)로 계산됩니다. 이는 첫 번째 벡터의 켤레복소수 [2-3j, 5-6j]가 계산에 적용되었기 때문입니다.