두 개의 1차원 시퀀스에 대한 이산 선형 컨볼루션(discrete linear convolution)을 반환하려면 Python NumPy의 numpy.convolve() 메서드를 사용하면 됩니다.
컨볼루션 연산자는 신호 처리 분야에서 자주 등장하며, 선형 시불변(Linear Time-Invariant) 시스템이 신호에 미치는 영향을 모델링하는 데 활용됩니다. 또한 확률론에서는 두 독립 확률 변수의 합이 각 확률 변수 분포의 컨볼루션을 따른다는 성질로도 알려져 있습니다.
만약 v가 a보다 길다면, 계산 전에 두 배열이 서로 교환됩니다. 이 메서드는 a와 v의 이산 선형 컨볼루션 결과를 반환합니다.
- 첫 번째 매개변수 a: 첫 번째 1차원 입력 배열입니다.
- 두 번째 매개변수 v: 두 번째 1차원 입력 배열입니다.
- 세 번째 매개변수 mode: 선택 사항이며, 'full', 'valid', 'same' 중 하나의 값을 가질 수 있습니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
array() 메서드를 사용하여 두 개의 NumPy 1차원 배열을 생성합니다.
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])
생성한 배열을 화면에 출력합니다.
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)두 배열의 차원(ndim)을 확인합니다.
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.convolve() 메서드를 사용하여 두 1차원 시퀀스의 이산 선형 컨볼루션을 계산하고 반환합니다.
print("\nResult....\n",np.convolve(arr1, arr2 ))전체 예제 코드
import numpy as np
# array() 메서드를 사용하여 두 개의 NumPy 1차원 배열 생성
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])
# 배열 출력
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.convolve() 메서드를 사용하여 두 1차원 시퀀스의 이산 선형 컨볼루션 계산
print("\nResult....\n",np.convolve(arr1, arr2 ))
실행 결과
Array1...
[1 2 3]
Array2...
[0. 1. 0.5]
Dimensions of Array1...
1
Dimensions of Array2...
1
Shape of Array1...
(3,)
Shape of Array2...
(3,)
Result....
[0. 1. 2.5 4. 1.5]
실행 결과를 보면, 길이가 각각 3인 두 배열의 컨볼루션 결과는 길이가 (3 + 3 - 1) = 5인 배열 [0. 1. 2.5 4. 1.5]로 반환되는 것을 확인할 수 있습니다.