當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy convolve用法及代碼示例


本文簡要介紹 python 語言中 numpy.convolve 的用法。

用法:

numpy.convolve(a, v, mode='full')

返回兩個一維序列的離散線性卷積。

卷積算子經常出現在信號處理中,它模擬線性時不變係統對信號的影響[1]。在概率論中,兩個獨立隨機變量的總和根據其各自分布的卷積進行分布。

如果 v 比 a 長,則在計算之前交換數組。

參數

a (N,) 數組

第一個一維輸入數組。

v (M,) 數組

第二個一維輸入數組。

mode {‘full’, ‘valid’, ‘same’},可選
‘full’:

默認情況下,模式為‘full’。這將返回每個重疊點的卷積,輸出形狀為 (N+M-1,)。在卷積的端點,信號不完全重疊,並且可能會看到邊界效應。

‘same’:

模式 ‘same’ 返回長度為 max(M, N) 的輸出。邊界效應仍然可見。

‘valid’:

模式 ‘valid’ 返回長度為 max(M, N) - min(M, N) + 1 的輸出。卷積乘積僅適用於信號完全重疊的點。信號邊界之外的值沒有影響。

返回

out ndarray

a 和 v 的離散線性卷積。

注意

離散卷積操作定義為

可以看出,在適當的填充之後(填充對於防止循環卷積是必要的),時間/空間中的卷積 相當於傅立葉域中的乘法 。由於乘法比卷積更有效(更快),因此函數 scipy.signal.fftconvolve 利用 FFT 來計算大型數據集的卷積。

參考

1

維基百科,“Convolution”,https://en.wikipedia.org/wiki/Convolution

例子

請注意卷積運算符如何將 “sliding” 之前的第二個數組翻轉過來:

>>> np.convolve([1, 2, 3], [0, 1, 0.5])
array([0. , 1. , 2.5, 4. , 1.5])

隻返回卷積的中間值。包含邊界效應,其中考慮了零:

>>> np.convolve([1,2,3],[0,1,0.5], 'same')
array([1. ,  2.5,  4. ])

這兩個數組的長度相同,因此它們完全重疊的位置隻有一個:

>>> np.convolve([1,2,3],[0,1,0.5], 'valid')
array([2.5])

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.convolve。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。