python 移动平均线_如何使用NumPy计算移动平均线?

NumPy缺乏特定的特定于域的功能可能是由于Core Team的纪律和对NumPy主要指令的保真度:提供N维数组类型,以及创建和索引这些数组的函数。像许多基本目标一样,这个目标并不小,NumPy非常出色。

(更大)的SciPy包含更大的域特定库集合(SciPy开发人员称为子包) - 例如,数值优化(优化),信号处理(信号)和积分微积分(积分)。

我的猜测是你所追求的功能至少在一个SciPy子包中(或许是scipy.signal); 然而,我会先看看SciPy scikits的集合,找出相关的scikit(s)并寻找那里感兴趣的功能。

Scikits是基于NumPy / SciPy独立开发的软件包,并针对特定的技术学科(例如,scikits-image,scikits-learn等)。其中一些(特别是用于数值优化的令人敬畏的OpenOpt)受到高度重视,成熟的项目早在选择居住在相对较新的scikits标题之前。该Scikits主页喜欢约30个这样的上述清单scikits,但至少数那些正在积极发展不再。

遵循这个建议会引导你到scikits-timeseries ; 但是,这个包裹不再处于积极发展之中; 实际上,Pandas已成为AFAIK,事实上 基于NumPy的时间序列库。

熊猫有几个可用于计算移动平均值的函数; 其中最简单的可能就是rolling_mean,你可以这样使用:

>>> # the recommended syntax to import pandas

>>> import pandas as PD

>>> import numpy as NP

>>> # prepare some fake data:

>>> # the date-time indices:

>>> t = PD.date_range('1/1/2010', '12/31/2012', freq='D')

>>> # the data:

>>> x = NP.arange(0, t.shape[0])

>>> # combine the data & index into a Pandas 'Series' object

>>> D = PD.Series(x, t)

现在,只需调用函数rolling_mean传递Series对象和窗口大小,在下面的示例中为10天。

>>> d_mva = PD.rolling_mean(D, 10)

>>> # d_mva is the same size as the original Series

>>> d_mva.shape

(1096,)

>>> # though obviously the first w values are NaN where w is the window size

>>> d_mva[:3]

2010-01-01         NaN

2010-01-02         NaN

2010-01-03         NaN

验证它是否有效 - 例如,比较原始系列中的值10 - 15与使用滚动平均值平滑的新系列

>>> D[10:15]

2010-01-11    2.041076

2010-01-12    2.041076

2010-01-13    2.720585

2010-01-14    2.720585

2010-01-15    3.656987

Freq: D

>>> d_mva[10:20]

2010-01-11    3.131125

2010-01-12    3.035232

2010-01-13    2.923144

2010-01-14    2.811055

2010-01-15    2.785824

Freq: D

Rolling_mean函数以及大约十几个其他函数在Rubric 移动窗口函数下的Pandas文档中非正式地分组; Pandas中第二个相关的函数组称为指数加权函数(例如,ewma,它计算指数移动的加权平均值)。第二组未包含在第一组(移动窗口函数)中的事实可能是因为指数加权变换不依赖于固定长度的窗口

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值