hample滤波器的原理及其Python实现

2023-11-20

1. 作用及原理

功能:检测并删除异常值
  用一个一维向量 x = { x 1 , x 2 . . . x n } \boldsymbol{x}={\{x_1,x_2...x_n\}} x={x1,x2...xn}表示序列,围绕每个元素生成观测窗口,假设半个窗口宽度为k,整个窗口的宽度为2k+1(包含中心的那个元素),计算该窗口中所有元素的中值,并利用中位数的绝对值估计各样本对中值的标准差.如果某个样本与中值相差超过三个标准差,则用中值替换该样本。

2. Python实现

参考了博主SineyCoder的去除异常值,使用python编写matlab的hampel(X)函数

def hampel(X,k):
    length = X.shape[0] - 1
    nsigma = 3
    iLo = np.array([i - k for i in range(0, length + 1)])
    iHi = np.array([i + k for i in range(0, length + 1)])
    iLo[iLo < 0] = 0
    iHi[iHi > length] = length
    xmad = []
    xmedian = []
    for i in range(length + 1):
        w = X[iLo[i]:iHi[i] + 1]
        medj = np.median(w)
        mad = np.median(np.abs(w - medj))
        xmad.append(mad)
        xmedian.append(medj)
    xmad = np.array(xmad)
    xmedian = np.array(xmedian)
    scale = 1.4826  # 缩放
    xsigma = scale * xmad
    xi = ~(np.abs(X - xmedian) <= nsigma * xsigma)  # 找出离群点(即超过nsigma个标准差)
 
    # 将离群点替换为中为数值
    xf = X.copy()
    xf[xi] = xmedian[xi]
    return xf
 
X = np.array([1, 2, 3, 4, 100, 4, 3, 2, 1])
res = hampel(X,3)
plt.plot(X)
plt.plot(res, '--')
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hample滤波器的原理及其Python实现 的相关文章

  • 为什么 Python 在导入脚本时只保存脚本的字节码?

    既然执行Python字节码会比运行原始源代码更快 因为Python不需要重新编译 为什么Python在导入脚本时只保存编译后的字节码呢 为每个执行的脚本保存 pyc 文件不是更好吗 无论如何 Python 解释器的启动时间都需要时间 即使您
  • 通过 python 中的另外两个修改数组[重复]

    这个问题在这里已经有答案了 假设我们有三个一维数组 A 长度为 5 B 长度相同 示例中为5 C 更长 比如长度为 100 C最初用零填充 A给出索引C应更改的元素 它们可能会重复 以及B给出应添加到初始零的值C 例如 如果A 1 3 3
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 雅虎财务请求功能出现 404 客户端错误

    yahoo Financials的请求功能出现404 Client Error 直接点击以下网址没有问题 https finance yahoo com quote AAPL financials p AAPL https finance
  • 使用 NumPy 编写一个函数来计算具有特定公差的积分

    我想编写一个自定义函数来以特定容差对表达式 python 或 lambda 函数 进行数字积分 我知道与scipy integrate quad人们可以简单地改变epsabs但我想使用 numpy 自己编写该函数 From 这篇博文 htt
  • 查找正在导入哪些 python 模块

    从应用程序中使用的特定包中查找所有 python 模块的简单方法是什么 sys modules是将模块名称映射到模块的字典 您可以检查其键以查看导入的模块 See http docs python org library sys html
  • App Engine NDB:如何访问属性的 verbose_name

    假设我有这个代码 class A ndb Model prop ndb StringProperty verbose name Something m A m prop a string value 当然 现在如果我打印 m prop 它会
  • 使用pathlib获取主目录

    翻看新的pathlib在 Python 3 4 中 我注意到没有任何简单的方法来获取用户的主目录 我能想到的获取用户主目录的唯一方法是使用旧的os path像这样的库 import pathlib from os import path p
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • Python - Unicode 到 ASCII 的转换

    我无法在不丢失数据的情况下将以下 Unicode 转换为 ASCII u ABRA xc3O JOS xc9 I tried encode and decode他们不会这么做 有人有建议吗 Unicode 字符u xce0 and u xc
  • 设置高亮大括号的 vim 颜色主题

    如何更改突出显示大括号的 vim 配色方案 我希望实际编辑 vim 主题文件以使更改永久生效 问候 克雷格 匹配括号的自动高亮颜色称为MatchParen 您可以通过执行以下操作来更改 vimrc 中的颜色 highlight MatchP
  • 正在使用 PIL 保存损坏的图像

    我遇到一个问题 操作图像像素导致保存损坏的图像 因此 我使用 PIL 打开图像 然后将其转换为 NumPy 数组 image Image open myimage png np image np asarray image 然后 我转置图像
  • python Recipe:列出最接近等于值的项[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 考虑像这样的列表 0 3 7 10 12 15 19 21 我想获得最接近任何值的最近的最小数字 所以如果我通过4 我会得到3 如果我
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • 是否可以在Python中将日+月(不是年)与当前日+月进行比较?

    我正在获取 5 月 10 日 格式的数据 我试图弄清楚它是今年还是明年 该日期仅一年 因此 5 月 10 日表示 2015 年 5 月 10 日 而 5 月 20 日表示 2014 年 5 月 20 日 为此 我想将字符串转换为日期格式并进
  • 如何在matplotlib中调整x轴

    I have a graph like this x轴上的数据表示小时 所以我希望x轴设置为0 24 48 72 而不是现在的值 很难看到 0 100 之间的数据 fig1 plt figure ax fig1 add subplot 11
  • 是否可以使用 Anaconda 包作为 Google Cloud Functions 的依赖项?

    我正在使用 Python 运行时编写 Google Cloud Function 我需要包含一些无法使用的依赖项pip 如文档中所述here https cloud google com functions docs writing spe
  • Python:如何在不先创建整个列表的情况下计算列表的总和?

    通常我们必须 1 声明一个列表 2 使用以下方法计算该列表的总和sum 但现在我希望指定一个以 1 开头 间隔为 4 100 个元素的列表 如下所示 1 5 9 13 17 21 25 29 33 37 我不想涉及数学公式 所以 1 如何在
  • 如何使用 enumerate 来倒数?

    letters a b c 假设这是我的清单 在哪里for i letter in enumerate letters 将会 0 a 1 b 2 c 我怎样才能让它向后枚举 如 2 a 1 b 0 c 这是一个很好的解决方案并且工作完美 i
  • pandas.read_fwf 忽略提供的数据类型

    我正在从文本文件导入数据框 我想指定列的数据类型 但 pandas 似乎忽略了dtype input 一个工作示例 from io import StringIO import pandas as pd string USAF WBAN S

随机推荐

  • python中文相似度_最准的中文文本相似度计算工具

    text2vec text2vec chinese text to vetor 文本向量化表示工具 包括词向量化 句子向量化 Feature 文本向量表示 字词粒度 通过腾讯AI Lab开源的大规模高质量中文词向量数据 800万中文词 获取
  • 数据中台外部演示脚本

    作为一个以产品 方案为主要核心的公司 公司员工本身对于产品一定是不陌生的 但是做产品演示光了解产品是不够的 需要自身对演示过程反复的练习 能够突出产品的亮点 要能够调动客户的兴趣 在演示产品的同时还需要对行业内其它相同的产品有所了解 在演示
  • Java学习13:面向对象-多态(Polymorphism)内存分析图解

    1 概述 多态是Java面向对象三大特征之一 多态 Polymorphism 顾名思义 即对象具有多种形态 具体而言 是编译时类型 运行时类型 编译时类型 由声明时的类型决定 一般是父类 运行时类型 由实际对应的对象类型决定 具体是哪个子类
  • 腾讯、阿里多位大佬共同推荐!封神级Python学习路线+核心知识点笔

    人工智能时代下 Python毫无疑问是最热的编程语言 有人夸它功能强大还上手轻松 有人说它学习曲线不那么陡峭 但是更多的人 在推开Python的大门后却发现 Python入门容易但精通却不易 你是否也曾傻傻分不清 列表 元组 字典 集合 等
  • mysql navicat 修改默认值_怎么在navicat中为datetime设置默认值

    在使用navicat设计表的字段时 是可以给字段设置默认值的 但是datetime类型类型的字段缺设置不了 下面我们就为大家详细解读一下这个问题 由于MySQL目前字段的默认值不支持函数 所以以create time datetime de
  • 2023面试问答-计算机网络

    OSI 的七层模型分别是 各自的功能是什么 简要概括 物理层 底层数据传输 如网线 网卡标准 数据链路层 定义数据的基本格式 如何传输 如何标识 如网卡MAC地址 网络层 定义IP编址 定义路由功能 如不同设备的数据转发 传输层 端到端传输
  • 【ES实战】ES中关于segment的小结

    文章目录 ES中关于segment的小结 ES中segment相关的原理 在Lucene中的产生segment的过程 Lucene commit过程 ES为了实现近实时可查询做了哪些 缩短数据可被搜索的等待时长 增加数据的可靠性 优化seg
  • mysql更新一张表的字段来自另一张表的某个字段

    UPDATE tba a LEFT JOIN tbb b on a id b id set a xxx b xxxx where a id b id
  • 对于opencv摄像头调用与现实方向相反的问题怎么解决?

    可以对原始图像进行水平翻转 使用opencv自带的flip函数 例如 读取图像帧 ret frame cap read 水平翻转图像 frame cv2 flip frame 1 这样就可以了 后面的参数1代表水平翻转图像 而0代表垂直翻转
  • node.js与elasticsearch交互

    参考elasticsearch 以下简称es 官方javascript的API https www elastic co guide en elasticsearch client javascript api 6 x api refere
  • Sqli-Labs靶场(6--10)题详解

    目录 六 Less 6 GET Double Injection Double Quotes string GET 双重注入 双引号 字符串 七 Less 7 GET Dump into outfile string GET 导出文件 字符
  • Altium designer自动布线设置GND或其他网络不布线的方法

    1 在导航栏里面找到设计栏 找到类选项打开2 在Net Classes选项下 右击鼠标 找到添加类选项 会创建一个New Class 3 设置好需要布线的网络 以及不需要布线的网络 如下图 4 找到自动布线菜单栏下的网络类 点击进去如下图
  • Android下自定义的jar库文件编译和调用

    主要为了解决如下问题 项目中使用了Android未公开的API 在Eclipse下会有红叉显示 不同的项目抽出相同部分的代码共用 必需的前提条件 需要有Android源代码 编译的库文件主要是封装未公开API或者共用代码 工程1 Java库
  • h5单页面埋点问题(undefine)

    需求 商城页面里调用第三方资源埋点 代码实现 主要解决资源未加载就被调用问题 备注 把调用函数作为参数传进去 控制保证在资源加载完成后调用 let COLLECTURL http collect trc com index js 动态创建j
  • java的特点

    一 简单易学 1 java的风格类似于c 因而许多c c程序员初次接触java语言时会感到熟悉 从某种意义来说c 语言是从c语言继承而来 java语言是c 语言的一个变种 因此 学过c或c 的程序员可以更快速的掌握java编程技术 附图 编
  • 【mysql timeStamp默认值0000-00-00 00:00:00 报错:Invalid default value for ‘end_time’】

    mysql timeStamp默认值0000 00 00 00 00 00 报错 Invalid default value for end time 运行其中的sql文件时报错 nvalid default value for end t
  • python猜拳游戏编程代码_用python实现“猜拳"游戏

    原标题 用python实现 猜拳 游戏 用python实现 猜拳 游戏 先来练习一道用python编写的小程序 这道题是用for in 循环实现输入10个数并求和 这里用到了append 方法 append 方法 是一个很重要的方法 它是向
  • 计算机翻译的汉字,计算机系外文翻译(中英对照3000汉字左右).doc

    文档介绍 毕业设计 论文 外文资料翻译系别计算机信息与技术系专业计算机科学与技术班级姓名学号外文出处附件1 原文 2 putingMainarticle puter wasrecordedin1613 referringtoapersonw
  • 拓扑排序,广度优先

    使用一个队列来进行广度优先搜索 初始时 所有入度为 0 的节点都被放入队列中 它们就是可以作为拓扑排序最前面的节点 并且它们之间的相对顺序是无关紧要的 在广度优先搜索的每一步中 取出队首的节点 u 将 u 放入答案中 移除 u 的所有出边
  • hample滤波器的原理及其Python实现

    hample滤波器 1 作用及原理 2 Python实现 1 作用及原理 功能 检测并删除异常值 用一个一维向量 x x 1