编程语言
首页 > 编程语言> > python – 了解NumPy的Convolve

python – 了解NumPy的Convolve

作者:互联网

在计算简单移动平均线时,numpy.convolve似乎可以完成这项工作.

问题:使用np.convolve(值,权重,’有效’)时如何进行计算?

当文档中提到的卷积乘积仅用于信号完全重叠的点时,2个信号指的是什么?

如果任何解释可以包括示例和插图,那将非常有用.

window = 10
weights = np.repeat(1.0, window)/window
smas = np.convolve(values, weights, 'valid')

解决方法:

卷积是一种主要用于信号处理的数学运算符. Numpy只是使用这个信号处理命名法来定义它,因此“信号”引用. numpy中的数组是一个信号.两个信号的卷积被定义为第一信号的积分,被反转,扫过(“卷入”)第二信号并且在重叠矢量的每个位置处相乘(用标量积).第一个信号通常称为内核,特别是当它是image processing或神经网络中的二维矩阵时,反转变为mirroring in 2-D(非转置).使用the animations on wikipedia可以更清楚地理解它.

根据上下文,卷积有多个定义.一些在重叠开始时开始卷积,而另一些在重叠仅部分时开始.在numpy的“有效”模式的情况下,重叠被指定为始终完成.它被称为“有效”,因为结果中给出的每个值都是在没有数据外推的情况下完成的.

例如,如果数组X的长度为2且数组Y的长度为4,则在“有效”模式下将X卷积到Y上将为您提供长度为3的数组.

第一步,X = [4 3]和Y = [1 1 5 5]:

[3 4]                   (X is reversed from [4 3] to [3 4], see note)
[1 1 5 5]
= 3 * 1 + 4 * 1 = 7

注意:如果X未反转,则操作将被称为cross-correlation而不是卷积.

第二步:

  [3 4]
[1 1 5 5]
= 3 * 1 + 4 * 5 = 23

第三步:

    [3 4]
[1 1 5 5]
= 3 * 5 + 4 * 5 = 35

模式“有效”的卷积结果将是[7 23 35].

如果重叠被指定为一个单一数据点(如模式“full”中的情况),结果将给出一个长度为5的数组.第一步是:

[3 4]
  [1 1 5 5]
= 3 * undefined (extrapolated as 0) + 4 * 1 = 4

等等.存在更多的外推模式.

标签:moving-average,convolution,python,numpy,python-2-7
来源: https://codeday.me/bug/20190930/1834303.html