先上例图~
在这里插入图片描述

函数介绍: numpy.convolve(a,v,mode =‘full’ )

参数说明:
    a:(N,)一维数组
    v:(M,)一维数组
    mode:{‘full’, ‘valid’, ‘same’}可选
      ‘full’ 默认值,这将在每个重叠点返回卷积,输出形状为(N + M-1,)。在卷积的端点,信号没有完全重叠,并且可以看到边界效应。
      ‘same’ 返回的数组max(M, N),边界效果仍然可见。
      ‘valid’  返回的数组max(M,N)-min(M,N)+1,卷积仅针对信号完全重叠的点给出,信号边界之外的值无效。

选用不同模式来处理边缘的差异如下图所示:
在这里插入图片描述

代码实现

def runavg(x, width):
#输入一原始时间序列和宽度,返回一个平滑以后的时间序列
    n = len(x)
    x = np.append(x, np.append(x, x))
    x_smooth = np.convolve(x, np.ones(width)/width, mode='same')
    xs = x_smooth[n:2*n]
    return xs

祝大家科研顺利,身心健康!
有错误的地方欢迎指正~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐