移动平均算法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

最新文章

  1. WinForm 文本框验证
  2. XMPie Tracking 操作
  3. java 克隆
  4. VM虚拟机忘记密码
  5. Error: 16GU盘变1G,恢复
  6. 鲁棒性是 Robustness
  7. linux下ping加时间戳实时输出到文件 放后台运行
  8. Win7显示隐藏文件,隐藏文件夹怎么显示?如何查看?
  9. mysql优化之定位问题
  10. Java基础知识强化之集合框架笔记40:Set集合之HashSet存储自定义对象并遍历
  11. Ubuntu频率较高的操作
  12. 自定义和扩展 SharePoint 2010 Server 功能区
  13. 谷歌下解决Pop遮罩层无法遮挡滚动栏下问题
  14. bat 常用命令
  15. Python 键盘鼠标监听
  16. Java集合之Stack
  17. Windows系统 应用或游戏 打开出现0xc000007b错误 解决方法
  18. mysql5安装
  19. Asp.net APP 重置密码的方式
  20. 简单的页面互点Javascript代码

热门文章

  1. 使用Visual Studio Code进行ABAP开发
  2. 【Python 21】52周存钱挑战1.0
  3. nginx日志切割(logrotate或shell脚本)
  4. RabbitMQ安装后无法访问https://localhost:15672/ 控制台问题解决
  5. Java线程状态转换
  6. [Oracle维护工程师手记]两表结合的MVIEW的告诉刷新
  7. Nginx部署静态页
  8. ABP中的拦截器之ValidationInterceptor(下)
  9. java.lang.NullPointerException 错误原因
  10. Eclipse 设置背景色