Python中的Numpy convolve()方法

Numpy convolve()方法用于返回两个一维向量的离散线性成交量积。成交量积是什么意思?用数学术语来说,成交量积是一种通常用于信号处理的数学运算符。 numpy中的数组充当信号。给定的两个信号(在为numpy的情况下为数组)的成交量积可以定义为第一信号(数组)的积分,取反,成交量积到第二信号(数组)并在任意点乘以(与标量积)向量重叠。

可以使用以下给出的函数来定义离散成交量积运算:

(v1 * v2) [n] = ∑ v1[m]v2[n-m]

句法

numpy.convolve (v1, v2, mode)

参量

Numpy convolve()函数最多采用三个参数:

v1:array_like,第一个一维输入数组。假设它的形状为(M,)

v2:array_like,第二个一维输入数组。假设它的形状为(N,)

模式:{“完整”,“相同”,“有效”},可选

它是一个可选参数,具有以下三种不同的模式:

    • “完整”:这是默认模式。这将在每个重叠点返回成交量积,输出形状为(M + N-1)。在成交量积的端点,向量v1和v2没有完全重叠,并且可以看到边界效应。
    • “相同”:在“相同”模式下,输出序列的长度为max(M,N)。边界效果仍然可见。
    • “有效”:在此“有效”模式下,输出序列的长度为max(M,N)– min(M,N)+1。仅当v1和v2完全重叠时才给出成交量积。信号边界之外的值不受影响。

返回值

convolve()方法返回v1和v2一维向量的离散线性成交量积。

编程范例

该程序演示numpy.convolve()方法的工作

# importing the numpy module
import numpy as np

# Making fist 1-D vector v1
v1 = np.array([3, 7])
print("First vector sequence is: ", v1)

# Making second 1-D vector v2
v2 = np.array([1, 2, 5, 7])
print("Second vector sequence is: ", v2)

print("nprinting linear convolution result between v1 and v2 using default 'full' mode:")
print(np.convolve(v1, v2))
print("nprinting linear convolution  result between v1 and v2 using 'same' mode:")
print(np.convolve(v1, v2, mode="same"))

print("nprinting linear convolution  result between v1 and v2 using 'valid' mode:")
print(np.convolve(v1, v2, mode="valid"))

输出量

First vector sequence is: [3 7]
Second vector sequence is: [1 2 5 7]

printing linear convolution result between v1 and v2 using default 'full' mode:
[ 3 13 29 56 49]

printing linear convolution result between v1 and v2 using 'same' mode:
[ 3 13 29 56]

printing linear convolution result between v1 and v2 using 'valid' mode:
[13 29 56] 

说明

在convolve1.py程序中,我们采用了两个名为v1和v2的一维输入向量。然后,我们通过使用三种不同模式中的每一种显示线性成交量积值来显示输出。

以“完整”模式执行的计算:

由于v1 = [3 7] 和v2 = [1 2 5 7] 并且以全模式执行运算时,输出数组的形状将由公式长度(M + N-1)给出,此处M = 2和N =4。因此,所得矢量的形状将为2 + 4 – 1 = 5 。

X从反向 [3 7] 至 [7 3],然后执行乘法运算:

第一个元素:7 *未定义(外推为0)+ 3 * 1 = 3

第二个元素:7 * 1 + 3 * 2 = 13

第三个元素:7 * 2 + 3 * 5 = 29

第四个元素:7 * 5 + 3 * 7 = 56

第五个元素是:7 * 7 + 3 *未定义(外推为0)= 49

因此,结果是: [3 13 29 56 49]

以“相同”模式执行的计算:

由于v1 = [3 7] 和v2 = [1 2 5 7] 运算将以公式max(M,N)给出,输出数组在相同模式下的形状将在此处M = 2和N =4。因此,结果向量的形状将为4。

X从反向 [3 7] 至 [7 3],然后执行乘法运算:

第一个元素:7 *未定义(外推为0)+ 3 * 1 = 3

第二个元素:7 * 1 + 3 * 2 = 13

第三个元素:7 * 2 + 3 * 5 = 29

第四个元素:7 * 5 + 3 * 7 = 56

第五个元素是:7 * 7 + 3 *未定义(外推为0)= 49

因此,结果是: [3 13 29 56 49]

以“有效”模式执行的计算:

由于v1 = [3 7] 和v2 = [1 2 5 7] 并在有效模式下执行运算,输出数组的形状将由公式长度max(M,N)– min(M,N)+ 1给出,此处M = 2和N = 4,因此所得向量的形状为:4 – 2 +1 = 3。

步骤1:将X从 [3 7] 至 [7 3],然后执行乘法运算:

第一个元素:7 *未定义(外推为0)+ 3 * 1 = 3

第二个元素:7 * 1 + 3 * 2 = 13

第三个元素:7 * 2 + 3 * 5 = 29

第四个元素:7 * 5 + 3 * 7 = 56

因此,结果是: [ 3 13 29 56]

最后,Python教程中的Numpy convolve()方法结束了。

也可以看看

numpy related()

Numpy Polyfit()

Numpy Linalg det()

numpy ceil()

脾气暴躁的地板()

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Ankit Lathiya所有,未经许可,不得转载
你可能还喜欢