移动平均数

mvgavg的Python项目详细描述


为什么??

到目前为止,numpy还没有内置移动平均值函数。 大多数解决方案都是乏味而复杂的。这个解决方案非常好。 它的操作类似于wolfram语言的movingaverage[]函数,但是 其优点是它可以指定轴(WordfRAM与 F[Y]和A//@ 无关。 但这是另一个故事)。

用法

有关示例,请参见文档。但实际上,它的用法是:

from mvgavg import mvgavg

mvgavg(array, n, axis=0, weights = [list of weights])
mvgavg(array, n, axis=0, binning = bool)

此代码的作用

考虑数组[a,b,c,d,…x,y,z]。取移动平均值 长度n=3产生一个新数组,其中第一个元素是(a+b+c)/3 第二个(b+c+d)/3等。这可以对任意深度的阵列进行, 所以如果你把时间序列放入 沿着轴= 0 (默认值)将返回所有T的移动平均值。 所有X的侧面。

输出是一个大小和形状相同但已缩短的矢量 在轴> /cTIT>轴上,长度为 n-1<c>

< H2>轴和权重选项

轴:轴允许操作深度增加,因此使用< CIT>轴= 1 参数,您可以使用移动平均值水平跨列操作。 你可以像数组本身那样做。

权重允许您自定义函数。默认权重(无)为 如上所述(所有值的权重相同)。另一个重量 您可以使用is'pascal'。这给出了n行帕斯卡三角形的权重, 例如,对于n=5,数组中带有项的(i+4j+6k+4l+m)/16,因为帕斯卡三角形中的第五条线是 [1,4,6,4,1]。其他默认权重选项是三角形(即 三角形(5)=[1,2,3,2,1],二次方是三角形的平方。或者自己做 列出你想要的东西并放在这里(确保len(weights)==n

装箱

binning大大缩短了数组的长度,并损失了一些精度。这是可取的 如果你有大量的数据,不需要保存每一点。这个 默认移动平均线和组合移动平均线的区别在于, 对于输入数组[abcdef…]和输出数组[abcdef…] 3,默认移动平均值如下:

A = [a b c]/3
B =   [b c d]/3
C =     [c d e]/3
D =       [d e f]/3
E =         [e f g]/3
....

但如果binning=true:

A = [a b c]/3
B =       [d e f]/3
C =             [g h i]/3
.....

如您所见,输出数组大大缩短。随着阵列变得越来越大, binning可以更快地计算数量级,如果您不需要 移动平均线的分辨率是处理数据的一种更有效的方法, 因为你可能会在以后绘图时把大部分数据扔掉 不管怎么说。

为什么这个功能很重要?

移动平均线平滑了数据,并阐明了否则可能不会 很明显。当x不同时,它们也有助于反向插值 产生相同的y。使用移动平均数的原因有很多,所以a 任意速度任意深度移动平均函数 需要写权重。

致谢

github上@fnjn的滑动窗口功能。

其他

如果您有问题,请在github上打开一个问题 https://github.com/NGeorgescu/python-moving-average或者如果你认为 您希望看到的功能,或者如果您有更快的算法

谢谢,祝你愉快!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java的单元测试测试用例库。util。列出实现   java通过超类进行序列化/反序列化   java Android获取设备语言ISO字符串   java如何打开广告的行动。移动   Eclipse IDE for(嵌入式C/C++)开发者202012:经典的深色主题深黑色背景和菜单中的文本   java使用不同的内容动态创建TableView(JavaFX)   java JAXB将多个同名节点解组   java ClassDefNotFoundException,即使类由类加载器加载(服务器上安装了多个应用程序)   java有没有办法关闭在后端生成的MqttClient线程?   html如何在网站上的java小程序中包含图像?   java无法访问已分配给超类引用的子类实例变量   java在TableViewer中双击打开对话框   列出如何创建ListNode。JAVA   java如何从文本中输出的数组中放入随机图像