平滑数据噪声的一个简单朴素的做法是,对窗口(样本)求平均,然后仅仅绘制出给定窗口的平均值,而不是所有的数据点。

import matplotlib.pyplot as plt
import numpy as np def moving_average(interval, window_size):
window = np.ones(int(window_size)) / float(window_size)
return np.convolve(interval, window, 'same') # numpy的卷积函数 t = np.linspace(start = -4, stop = 4, num = 100)
y = np.sin(t) + np.random.randn(len(t)) * 0.1
y_av = moving_average(interval = y, window_size = 10)
plt.plot(t, y, "b.-", t, y_av, "r.-") plt.xlabel('Time')
plt.ylabel('Value')
plt.legend(['original data', 'smooth data'])
plt.grid(True)
plt.show()

以下方法是基于信号(数据点)窗口的卷积(函数的总和)

import matplotlib.pyplot as plt
import numpy as np WINDOWS = ['flat', 'hanning', 'hamming', 'bartlett', 'blackman'] def smooth(x, window_len = 11, window = 'hanning'):
if x.ndim != 1:
raise ValueError('smooth only accepts 1 dimension arrays.')
if x.size < window_len:
raise ValueError('Input vector needs to be bigger than window size.')
if window_len < 3:
return x
if not window in WINDOWS:
raise ValueError('Window is one of "flat", "hanning", "hamming", "bartlett", "blackman"')
s = np.r_[x[window_len-1:0:-1], x, x[-1:-window_len:-1]]
if window == 'flat':
w = np.ones(window_len, 'd')
else:
w = eval('np.' + window + '(window_len)')
y = np.convolve(w/w.sum(), s, mode='valid')
return y t = np.linspace(-4, 4, 100)
x = np.sin(t)
xn = x + np.random.randn(len(t))*0.1 y = smooth(x)
ws = 31 plt.figure() plt.subplot(211)
plt.plot(np.ones(ws))
for w in WINDOWS[1:]:
eval('plt.plot(np.' + w + '(ws))')
plt.axis([0, 30, 0, 1.1])
plt.legend(WINDOWS)
plt.title('Smoothing windows') plt.subplot(212)
plt.plot(x)
plt.plot(xn)
for w in WINDOWS:
plt.plot(smooth(xn, 10, w))
l = ['original signal', 'signal with noise']
l.extend(WINDOWS)
plt.legend(l)
plt.title('Smoothed signal') plt.show()

中值过滤,即逐项的遍历信号,并用相邻信号项中的中值替代当前项

import matplotlib.pyplot as plt
import numpy as np
import scipy.signal as signal x = np.linspace(start=0, stop=1, num=51) x[3::5] = 1.5 # 从第4个 数开始,每个5个数,将其值改为 1.5 plt.plot(x, 'k.')
plt.plot(signal.medfilt(volume=x, kernel_size=3), 'b.-') # 在给定大小的邻域内取中值替代数据值,在邻域中没有元素的位置补0
plt.plot(signal.medfilt(volume=x, kernel_size=15), 'r.-')
plt.legend(['original signal', 'length 3', 'length 15'])
plt.show()

python 数据可视化 -- 真实数据的噪声平滑处理的更多相关文章

  1. python 数据可视化 -- 读取数据

    从 CSV 文件中读取数据(CSV) import sys import csv # python 内置该模块 支持各种CSV文件 file_name = r"..\ch02_data\ch ...

  2. Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor

    Webservice WCF WebApi   注明:改编加组合 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下, ...

  3. 第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)

    数据分布图简介 中医上讲看病四诊法为:望闻问切.而数据分析师分析数据的过程也有点相似,我们需要望:看看数据长什么样:闻:仔细分析数据是否合理:问:针对前两步工作搜集到的问题与业务方交流:切:结合业务方 ...

  4. 第二篇:R语言数据可视化之数据塑形技术

    前言 绘制统计图形时,半数以上的时间会花在调用绘图命令之前的数据塑型操作上.因为在把数据送进绘图函数前,还得将数据框转换为适当格式才行. 本文将给出使用R语言进行数据塑型的一些基本的技巧,更多技术细节 ...

  5. 【visio】数据可视化 - 形状数据

    visio在对数据处理方面也是有一整套的设施,用户可以用visio存储.管理对象数据,利用数据驱动图形设计,让数据形象化,并在团队沟通的时候清晰地展示数据,沟通数据. 1.属性 每个图形都可以设置多个 ...

  6. 5 种使用 Python 代码轻松实现数据可视化的方法

    数据可视化是数据科学家工作中的重要组成部分.在项目的早期阶段,你通常会进行探索性数据分析(Exploratory Data Analysis,EDA)以获取对数据的一些理解.创建可视化方法确实有助于使 ...

  7. [转]5 种使用 Python 代码轻松实现数据可视化的方法

    数据可视化是数据科学家工作中的重要组成部分.在项目的早期阶段,你通常会进行探索性数据分析(Exploratory Data Analysis,EDA)以获取对数据的一些理解.创建可视化方法确实有助于使 ...

  8. 数据可视化:使用python代码实现可视数据随机漫步图

    #2020/4/5 ,是开博的第一天,希望和大家相互交流学习,很开森,哈哈~ #像个傻子哟~       #好,我们进入正题, #实现功能:利用python实现数据随机漫步,漫步点数据可视化 #什么是 ...

  9. 超级干货 :一文读懂数据可视化 ZT

    前言 数据可视化,是指将相对晦涩的的数据通过可视的.交互的方式进行展示,从而形象.直观地表达数据蕴含的信息和规律. 早期的数据可视化作为咨询机构.金融企业的专业工具,其应用领域较为单一,应用形态较为保 ...

随机推荐

  1. opencv常用api

    opencv常用api 一.图像及视频读写 img=cv2.imread('jiang.jpg',1)    cv2.imwrite('jiang.jpg',img)   cv2.imshow('ji ...

  2. Django Cookie和Seesion

    1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生.cookie的工作原理是:由服务器产生内容,浏览器 ...

  3. Centos7 操作系统 mysql5.7 配置远程登陆操作

    Centos7 操作系统: mysql5.7 配置远程登陆操作: 首先登陆服务器,进入数据库: mysql -u root -p show databases; use mysql; show tab ...

  4. android checkbox自定义(文字位置、格式等)

    第一种:在原生中只调整显示位置等: <CheckBox android:id="@+id/checkBox8" android:layout_width="wrap ...

  5. jquery+ajax搜索并分页

    定义一个点击事件,获取关键词,传到后台,根据关键词搜索并分页.获取根据关键词分页后的数据,展示到前台.直接替换原来的数据. //接收当前页 $page = Request::instance()-&g ...

  6. Linux网络编程学习(十一) ----- 五种I/O模式(第六章)

    1.五种I/O模式是哪几个? 阻塞I/O,非阻塞I/O,I/O多路复用,信号驱动I/O(SIGIO),异步I/O 一般来讲程序进行输入操作有两个步骤,一是等待有数据可读,二是将数据从系统内核中拷贝到程 ...

  7. 定位篇align_measurements

    算子:create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metr ...

  8. TCP报文格式

    转载自https://blog.csdn.net/mary19920410/article/details/58030147 1.TCP报文格式 TCP报头中的源端口号和目的端口号同IP数据报中的源I ...

  9. pycharm 配置svn

    1.找到本地svn.exe 2.配置svn路径 3.输入svn路径,然后会进行密码校验 问题 本地的TortoiseSVN在bin目录没有发现svn.exe 原因: 安装TortoiseSVN的时候 ...

  10. JDK环境安装步骤

    1.下载JDK https://www.oracle.com/technetwork/java/javase/downloads/index.html 下图圈中位置为最新JDK 点击进入下载页面,将页 ...