Moving Average
2024-09-02 06:18:31
移动平均算法Demo
#!/usr/bin/python2.7
# Fetch data from BD and analyse. import json
import urllib
import traceback
import numpy as np
# import pandas as pd
import matplotlib.pyplot as plt
#from scipy import stats def fetch_raw_data(url):
try:
response = urllib.urlopen(url).read().decode('utf-8')
return json.loads(response)
except Exception, e:
err = traceback.format_exc()
print("fetch_raw_data err: {}".format(err)) # 移动平均算法
def moving_average(f_t):
if type(f_t) is not np.ndarray:
raise TypeError\
('Expected one dimensional numpy array.')
if f_t.shape[1] != 1:
raise IndexError\
('Expected one dimensional numpy array, %d dimensions given.' % (f_t.shape[1])) f_t = f_t.flatten()
window = 5
mode = 'same'
g_t = np.ones(int(window))/float(window)
# Deal with boundaries with atleast lag/2 day window
# ma = np.convolve(f_t,g_t,mode)
# ma = np.convolve(f_t,g_t,mode)[window-1:-window+1]
ma = np.convolve(f_t,g_t)[window-1:-window+1]
return ma def raw_data():
start_ts = 1533204000
stop_ts = 1533222000
url = 'http://8.8.8.8/path/data?begin_time={}&end_time={}&type=asia'
url = url.format(start_ts,stop_ts)
result = fetch_raw_data(url)
# downloadspeed_lst = result['result']['downloadspeed']
downloadspeed_lst = result['result']['totaluploadspeed']
downloadspeed_lst = [ [ele,] for ele in downloadspeed_lst ]
return downloadspeed_lst def run(downloadspeed_lst):
downloadspeed_ndarray = np.array(downloadspeed_lst)
ma = moving_average(downloadspeed_ndarray)
return ma data = raw_data()
ma = run(data)
t = np.arange(4, len(data))
plt.plot(t, data[4:], lw=1.0)
plt.plot(t, ma, lw=1.0)
plt.show()
执行结果:
蓝色是原始数据,棕色是经过移动平均算法弱化后的数据。
2018-08-07 补充
import numpy as np
from matplotlib import pyplot as plt def moving_average(array, window=3):
N = window
n=np.ones(N)
weights=n/N
sma=np.convolve(weights,array)[N-1:-N+1] t=np.arange(N-1,len(array))
plt.plot(t,array[N-1:],lw=1)
plt.plot(t,sma,lw=2)
plt.show()
return sma
卷积运算
numpy.convolve(weights,array)[N-1:-N+1] weight = [a,b,c]
array = [i,j,k,m,n] Result:
[ai, bi+aj, ci+bj+ak, cj+bk+am, ck+bm+an, cm+bn, cn][N-1:-N+1]
参考:https://www.cnblogs.com/21207-iHome/p/6231607.html
参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html
最新文章
- WinForm 文本框验证
- XMPie Tracking 操作
- java 克隆
- VM虚拟机忘记密码
- Error: 16GU盘变1G,恢复
- 鲁棒性是 Robustness
- linux下ping加时间戳实时输出到文件 放后台运行
- Win7显示隐藏文件,隐藏文件夹怎么显示?如何查看?
- mysql优化之定位问题
- Java基础知识强化之集合框架笔记40:Set集合之HashSet存储自定义对象并遍历
- Ubuntu频率较高的操作
- 自定义和扩展 SharePoint 2010 Server 功能区
- 谷歌下解决Pop遮罩层无法遮挡滚动栏下问题
- bat 常用命令
- Python 键盘鼠标监听
- Java集合之Stack
- Windows系统 应用或游戏 打开出现0xc000007b错误 解决方法
- mysql5安装
- Asp.net APP 重置密码的方式
- 简单的页面互点Javascript代码
热门文章
- 使用Visual Studio Code进行ABAP开发
- 【Python 21】52周存钱挑战1.0
- nginx日志切割(logrotate或shell脚本)
- RabbitMQ安装后无法访问https://localhost:15672/ 控制台问题解决
- Java线程状态转换
- [Oracle维护工程师手记]两表结合的MVIEW的告诉刷新
- Nginx部署静态页
- ABP中的拦截器之ValidationInterceptor(下)
- java.lang.NullPointerException 错误原因
- Eclipse 设置背景色