当前位置: 首页 > 知识库问答 >
问题:

移动平均数或运行平均数

林蕴藉
2023-03-14

Python是否有一个SciPy函数或NumPy函数或模块来计算给定特定窗口的一维数组的运行平均值?

共有1个答案

洪成济
2023-03-14

更新:已经提出了更有效的解决方案,scipy中的uniform_filter1d可能是“标准”第三方库中最好的,也有一些更新或专门的库可用。

您可以使用np.convolve:

np.convolve(x, np.ones(N)/N, mode='valid')

运行平均数是卷积数学运算的一个例子。对于运行的平均值,您可以沿着输入滑动一个窗口,并计算窗口内容的平均值。对于离散的一维信号,卷积是同样的事情,除了计算任意线性组合而不是平均值,即每个元素乘以相应的系数,然后将结果相加。这些系数,窗口中的每个位置一个,有时被称为卷积核。N个值的算术平均值是(x_1+x_2+...+x_N)/N,因此对应的内核是(1/N,1/N,...,1/N),这正是我们使用np.ones(N)/N得到的结果。

import numpy as np
import matplotlib.pyplot as plt
modes = ['full', 'same', 'valid']
for m in modes:
    plt.plot(np.convolve(np.ones(200), np.ones(50)/50, mode=m));
plt.axis([-10, 251, -.1, 1.1]);
plt.legend(modes, loc='lower center');
plt.show()
 类似资料:
  • 问题内容: 美好的一天, 我正在使用以下代码来计算9天移动平均线。 但这是行不通的,因为它会在调用限制之前先计算所有返回的字段。换句话说,它将计算该日期之前或等于该日期的所有关闭时间,而不仅仅是最后9个。 因此,我需要从返回的选择中计算出SUM,而不是直接计算出来。 IE浏览器 从SELECT中选择SUM … 现在我将如何去做,这是非常昂贵的还是有更好的方法? 问题答案: 使用类似 内查询返回的所

  • 我也看过Pyspark中的加权移动平均线,但我需要一个Spark/Scala的方法,以及10天或30天的均线。 有什么想法吗?

  • 公式链接:https://sciencing.com/calculate-exponential-moving-averages-8221813.html

  • 取一定时间内的平均值 用法 Your browser does not support the video tag. 案例:数据变化趋势 功能:加入平均值和不加平均值的折线图形成对比,显示数字改变的规律 工作原理 结果将会是一段时间段输入的平均值。你可以设置配置项中的时间段长度(工程师叫它采样窗) 提示 短的采样窗意为着输出对输入变化的反应更敏感。

  • 问题内容: 我有一个二维的numpy数组。我想对每个条目取n个最近条目的平均值,就像对一维数组取滑动平均值一样。什么是最干净的方法? 问题答案: 这与将 滤镜 应用于 图像的 概念类似。 幸运的是,有很多功能可以做到这一点。您所追求的是。 可以这样使用: 如果您需要5x5滤镜,请使用。该选项控制如何处理边缘。您没有指定要如何处理边缘。在此示例中,“常量”模式表示将数组边界之外的每个项目都视为常量值

  • 问题内容: 我有一个表(日期,有效负载),其中包含约10年的数据,我想基于14天(2周)和90天(12周)的间隔计算移动平均值(MA),以显示有效负载的趋势 我已经写了这个查询,但是它得到了错误的值 实际上我知道是什么,但我不了解Oracle的工作原理! 我可以在Excel中进行计算,但是我需要在数据库级别执行此操作,能否请您告诉我如何执行此操作? 问题答案: 我不明白使用的目的是什么?根据文档,