带权重的多点滑动平均
Python的滑动平均可以用卷积函数np.convolve实现的,但是对于数据边缘,要不就选择mode='valid'让两端数据缺失,要不选择mode='same'让边界的数据有偏差(边界效应),为了合理估计边缘的滑动值,往外扩展了2个数(用原序列边缘的数据求平均),自己写了一个1-2-4-2-1五点平滑。
import csvdef smooth_5(data):import numpy as npdata=np.array(data)# 扩展边缘值data_02 = (data[0]+data[1]+data[2])/3.0data_01 = (data[0]+data[1]+data[2]+data[3])/4.0data_1 = (data[-1]+data[-2]+data[-3]+data[-4])/4.0data_2 = (data[-1]+data[-2]+data[-3])/3.0data = [data_02,data_01]+data+[data_1,data_2]# 利用卷积函数平滑 arr_data = np.convolve(np.array(data),w/w.sum(),'valid')return arr_dataId=[]
with open('Id_norm.csv',encoding='gb18030',errors="ignore") as d:csv_file = csv.reader(d)for row in csv_file :Id.append(row)
Id_norm=Id[1]Id_5=smooth_5(Id_norm)
实测能用
同理,还可以做1-2-1,1-3-4-3-1等等滤波器,只需要修改相应系数即可。
但是这么设置还是有点麻烦的,每次使用都要改函数里面的内容,所以后来索性换一个思路,使用while循环先把数据两端扩展半个滑动窗口长度,再利用np.convolve并且选择mode='valid',让平滑后的序列与原序列长度相同,这样就可以直接把平滑窗各位置的权重写成一个元组或者列表,作为参数传进函数里计算了。
def smooth_weight(data,weight=(1,2,4,2,1)):import numpy as npdata=np.array(data)data_raw=data.copy()w=np.array(weight)# 扩展边缘t=w.shape[0]-1while t!=(w.shape[0]-1)/2: data_head=np.array([np.nanmean(data_raw[:t])])data_tail=np.array([np.nanmean(data_raw[-t:])])data = np.concatenate((data_head,data,data_tail)) t -= 1# 利用卷积函数平滑 arr_data = np.convolve(np.array(data),w/w.sum(),'valid')return arr_dataId=[]
with open('Id_norm.csv',encoding='gb18030',errors="ignore") as d:csv_file = csv.reader(d)for row in csv_file :Id.append(row)
Id_norm=Id[1]Id_5=smooth_weight(Id_norm,weight=(1,2,4,2,1))Id_7=smooth_weight(Id_norm,weight=(1,2,3,4,3,2,1))
欢迎交流
祝各位科研顺利~
带权重的多点滑动平均相关推荐
- 神经网络优化:指数衰减计算平均值(滑动平均)
Polyak平均会平均优化算法在参数空间访问中的几个点.如果t次迭代梯度下降访问了点,那么Polyak平均算法的输出是. 当应用Polyak平均于非凸问题时,通常会使用指数衰减计算平均值: 1. 用滑 ...
- 理解滑动平均(exponential moving average)
1. 用滑动平均估计局部均值 滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以 ...
- matlab实现滑动平均滤波(二)
滑动平均(moving average):在地球物理异常图上,选定某一尺寸的窗口,将窗口内的所有异常值做算术平均,将平均值作为窗口中心点的异常值.按点距或线距移动窗口,重复此平均方法,直到对整幅图完成 ...
- matlab 计算汉明距_matlab实现滑动平均滤波
什么是滑动均值滤波 滑动平均滤波就是把连续取得的N个采样值看成一个队列,队列的长度固定为N,每次采样得到一个新数据放到队尾,并丢掉原来队首的一次数据,把队列中的N个数据进行平均运算,就可以获得新的滤波 ...
- Matlab filter实现滑动平均滤波
[来自科学网]http://www.sciencenet.cn/m/user_content.aspx?id=265965 Matlab有多种计算滑动平均的方法,现介绍基于filter函数的计 ...
- 深度学习_深度学习基础_滑动平均详解
滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving avergae),可以用来估计变量的局部均值,使得变 ...
- π型滤波频率计算_滑动平均滤波的截止频率与平均点数计算
1.介绍 滑动平均值滤波可以去除随机噪声.测量中随机噪声的影响,使测量结果不准确,通过多次测量同一数据源,使用多点集合平均的方法得到数据一个比较合理的估计就是滑动平均值滤波. 例如第80采样点的5次平 ...
- 滑动平均滤波的截止频率与平均点数计算
1. 介绍 滑动平均值滤波可以去除随机噪声.测量中随机噪声的影响,使测量结果不准确,通过多次测量同一数据源,使用多点集合平均的方法得到数据一个比较合理的估计就是滑动平均值滤波. 例如第80采样点的5次 ...
- 机器学习笔记:时间序列分解(滑动平均)
0 前言 时间序列数据可以表现出多种模式,将时间序列拆分为多个组件通常很有帮助,每个组件代表一个基础模式类别. 在机器学习笔记(时间序列):不同类型的图示_UQI-LIUWJ的博客-CSDN博客中,我 ...
最新文章
- 如何更好的与人沟通?[图]
- js验证开始日期不能大于结束日期_js前台判断开始时间是否小于结束时间
- visual studio 2015 配置好qt5后, 第一次运行出现 无法打开源文件“QtWidgets/QApplication”和无法运行rc.exe的解决方案
- 反序列化 php R类型,pikachu-PHP反序列化、XXE、SSFR
- vb.net 中最小化到托盘和锁定窗体大小的问题(notifyIcon的两个重要属性)
- 解决hibernate双向关系造成的一方重复执行SQl,或者死循环的问题
- pip更新命令_如何批量更新电脑中的python包?
- meet --- 位运算
- VMware Horizon USB重定向排除特定设备
- 工程计算书(计算稿)共享和服务—PASS云计算书平台
- 科学计算机怎么用10次方,一个数怎么用计算器开10次方
- 1 搭建Flash游戏开发环境
- Python数据类型——逻辑值详解
- Gradle - 简介
- php选择手机相片,头像直接从手机图库选择或者拍照上传
- 机器视觉实用工具集NO.16——指定监控区域运动物体闯入检测工具
- Butterfly主题背景魔改
- c语言判断正整数x是否为同构数,c语言上机题库(阅读).doc
- 九州量子黄蕾蕾:我们是冲着量子通信产业化来的
- react 展开收起写法(手动展开收起 和 自动展开收起)
热门文章
- 安全专家谈国内僵尸网络的现状与发展
- ubuntu curl: not found
- 键盘输入今年的某月某日c语言,计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日通过键盘输入传递到程序中。...
- 光遇服务器什么时候维护2月21日,光遇8月21日维护公告有什么 维护公告一览
- PS 学习笔记13-仿制图章工具组
- python不允许标点符号_python3去掉string中的标点符号方法
- 光棍节献礼:兄弟们,咱一起到朝鲜团购老婆去吧!
- 操作系统实验--30天自制操作系统第5天实验日志
- 好用的蓝牙耳机有哪些推荐?2022蓝牙耳机性价比之王
- Web三维可视化监控系统搭建(1)——Web三维/ VR交互技术初探