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

Python에서 numpy.vdot()으로 두 벡터의 내적 구하기

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]가 계산에 적용되었기 때문입니다.