理解努比的骗局

2024-05-16 23:05:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

问题:使用np.convolve(values, weights, 'valid')时如何计算?

当文档提到convolution product is only given for points where the signals overlap completely时,这两个信号指的是什么?

如果任何解释可以包括例子和插图,那将是非常有用的。

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

Tags: 文档numpyonlyforisnpproductwindow
1条回答
网友
1楼 · 发布于 2024-05-16 23:05:30

卷积是一种主要用于信号处理的数学算子。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

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

相关问题 更多 >