在数组中查找几个感兴趣的区域

2024-01-11

假设我进行了一项实验,其中我让 python 程序运行了很长一段时间,在那段时间里,我对一些数量与时间的关系进行了多次测量。每次测量都以 1 到 3 秒之间的某个值分隔,所使用的时间步长比该值小得多......比如 0.01 秒。即使只取 y 轴,这种情况的示例也可能如下所示:

[...0,1,-1,4,1,0,0,2,3,1,0,-1,2,3,5,7,8,17,21,8,3,1,0,0,-2,-17,-20,-10,-3,3,1,0,-2,-1,1,0,0,1,-1,0,0,2,0...]

这里我们有一段不活动的时期,然后是急剧上升、下降、在 0 附近短暂停顿、急剧下降、急剧上升并再次稳定在 0 附近。这些点表明这是双向延伸的长数据流的一部分。整个数据集中会有许多这样的事件,其长度各不相同,由低震级区域分隔开。

我希望本质上形成一个 'n' 数组arrays (tuples?)以不同的长度捕获事件,以便我稍后可以单独分析它们。我不能纯粹用一个来分开np.absolute()输入阈值,因为在给定事件中偶尔会有接近零值的小区域,例如上面的示例。除此之外,测量之间可能偶尔会出现幅度较大但持续时间较短的信号。

理想情况下,上面的示例最终会从平坦区域的两侧左右得到几个元件左右。

[0,-1,2,3,5,7,8,17,21,8,3,1,0,0,-2,-17,-20,-10,-3,3,1,0,-2,-1]

我在想这样的事情:

Input:

[0,1,0,0,-1,4,8,22,16,7,2,1,0,-1,-17,-20,-6,-1,0,1,0,2,1,0,8,-7,-1,0,0,1,0,1,-1,-17,-22,-40,16,1,3,14,17,19,8,2,0,1,3,2,3,1,0,0,-2,1,0,0,-1,22,4,0,-1,0]

根据低于 2 的连续值的数量进行分割。

[[-1,4,8,22,16,7,2,1,0,-1,-17,-20,-6,-1],[8,-7,-1,0],[-1,-17,-22,-40,16,1,3,14,17,19,8,2,0],[1,22,4,]]

就像这张图一样:

如果子数组长度小于 10,则删除:

[[-1,4,8,22,16,7,2,1,0,-1,-17,-20,-6,-1],[-1,-17,-22,-40,16,1,3,14,17,19,8,2,0]]

这是解决这个问题的好方法吗?第一步也让我有点困惑。我还需要保留事件中那些小的低强度区域。

重新编辑!我将比较两个信号,每个信号都作为时间的函数进行测量,因此它们将被压缩到一个元组列表中。


这是我的两分钱,基于指数平滑。

import itertools
A=np.array([0,1,0,0,-1,4,8,22,16,7,2,1,0,-1,-17,-20,-6,-1,0,1,0,2,1,0,8,-7,-1,0,0,1,0,1,-1,-17,-22,-40,16,1,3,14,17,19,8,2,0,1,3,2,3,1,0,0,-2,1,0,0,-1,22,4,0,-1,0])
B=np.hstack(([0,0],A,[0,0]))
B=np.asanyarray(zip(*[B[i:] for i in range(5)]))
C=(B*[0.25,0.5,1,0.5,0.25]).mean(axis=1) #C is the 5-element sliding windows exponentially smoothed signal
D=[]
for item in itertools.groupby(enumerate(C), lambda x: abs(x[1])>1.5): 
    if item[0]:
        D.append(list(item[1])) #Get the indices where the signal are of magnitude >2. Change 1.5 to control the behavior.
E=[D[0]]
for item in D[1:]:
    if (item[0][0]-E[-1][-1][0]) <5: #Merge interesting regions if they are 5 or less indices apart. Change 5 to control the behavior.
        E[-1]=E[-1]+item
    else:
        E.append(item)
print [(item[0][0], item[-1][0]) for item in E]
[A[item[0][0]: item[-1][0]] for item in E if (item[-1][0]-item[0][0])>9] #Filter out the interesting regions <10 in length.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在数组中查找几个感兴趣的区域 的相关文章

  • Sublime Text 插件开发中的全局 Python 包

    一 总结 我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包 而不是 Sublime Text 目录的 Python 包 Sublime Text使用自己的Python环境 而不是
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • 使用 python 中的公式函数使从 Excel 中提取的值的百分比相等

    import xlrd numpy excel Users Bob Desktop wb1 xlrd open workbook excel assignment3 xlsx sh1 wb1 sheet by index 0 colA co
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • 工作日重新订购 Pandas 系列

    使用 Pandas 我提取了一个 CSV 文件 然后创建了一系列数据来找出一周中哪几天崩溃最多 crashes by day bc DAY OF WEEK value counts 然后我将其绘制出来 但当然它按照与该系列相同的排名顺序绘制
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 从扫描文档中提取行表 opencv python

    我想从扫描的表中提取信息并将其存储为 csv 现在我的表提取算法执行以下步骤 应用倾斜校正 应用高斯滤波器进行去噪 使用 Otsu 阈值进行二值化 进行形态学开局 Canny 边缘检测 进行霍夫变换以获得表格行 去除重复行 10像素范围内相
  • pytest:同一接口的不同实现的可重用测试

    想象一下我已经实现了一个名为的实用程序 可能是一个类 Bar在一个模块中foo 并为其编写了以下测试 测试 foo py from foo import Bar as Implementation from pytest import ma
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • 从多维无穷大数组中删除数组元素

    我想删除一个特定元素 例如 我想删除元素id 76在下面的数组中 而且 数组可以无限地组合在一起 这里的问题是我无法刷新页面 因为我使用 Vue js 进行即时操作 如果我能做到这一点 我的下一个问题可能是如何在我现在想要的地方添加一个元素
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • 定义 _HAS_TRADITIONAL_STL 来启用 STL 功能是否安全?

    在尝试使用std select1st from
  • 字典无法识别浮点键

    我有一本叫做 G 的字典 当我输入G keys 输出的一个示例是 gt gt gt G keys 1490775 0 12037425 0 1493775 0 12042675 0 1481055 0 12046305 0 1503105
  • 获取数据库中唯一约束和索引的列表

    我必须获取所有唯一键约束的列表以及特定数据库的索引 我正在做这样的事情 SELECT FROM sys sysobjects WHERE type u AND name LIKE
  • 为什么骨干路由需要默认路由

    我用backbone js 创建一个测试用例 http jsfiddle net VWBvs 5 http jsfiddle net VWBvs 5 路线定义为 var AppRouter Backbone Router extend ro
  • vararg 的 Scala 模式匹配

    我只是想在 scala 上做一些实践 并尝试自己实现 List concat 函数 这是代码 def concat A lists Traversable A List A println concat called lists match
  • 如何使用 Backbone.js,但以 NO-RESTful 方式?

    我现在是一名前端开发人员 我有一个项目用BackboneJS就可以了 服务端是别人写的 有谁可以告诉我如何以非 RESTful 方式覆盖删除 更新 添加等操作 服务器端的 URL 可能是这样的 add www domain com addB
  • 什么是属性对象?

    我对 python 并不陌生 但我有一个非常基本的问题 我在玩python 发现有 type 属性 gt gt gt property
  • 如何深度比较 2 个 Lua 表,它们可能有也可能没有表作为键?

    也发布在 Lua 邮件列表上 所以我一直在编写深复制算法 我想测试它们 看看它们是否按照我想要的方式工作 虽然我确实可以访问原始 gt 复制映射 但我想要一个通用的深度比较算法 该算法必须能够比较表键 表作为键 我的深度复制算法 可以在这里
  • 私有非常量和公共常量成员函数 - 和平共存?

    我正在尝试创建一个具有两个同名方法的类 用于访问私有成员 一种方法是公共且 const 限定的 另一种方法是私有且非常量的 由友元类使用 通过引用返回的方式修改成员 不幸的是 我收到编译错误 使用 g 4 3 当使用非常量对象调用该方法时
  • 带有 SVM 基分类器的 AdaBoost 的执行时间

    我刚刚用这些参数制作了一个 Adaboost 分类器 1 n estimators 50 2 base estimator svc 支持向量分类器 3 learning rate 1 这是我的代码 from sklearn ensemble
  • NETSDK1073:无法识别 FrameworkReference“Microsoft.AspNetCore.App”

    我使用 NET Core 5 0 100 preview 7 20366 6 Blazor webassemble Microsoft Visual Studio Community 2019 预览版 16 7 0 预览版 6 0 file
  • 在 Actionscript 上播放声音

    我有一个简单的拖放游戏 在 Flash 中启动并且大部分工作正常 我已经添加了我的动物 您可以将它们拖放到正确的位置 我还添加了声音 这样当动物被放到正确的位置时 它就可以工作 但是每次我将新动物添加到正确的位置时 它都会起作用 播放那个声
  • Objective-C 中的 NSBundle 和 mainBundle 是什么?

    关于iOS上的Objective C应用程序 我在Apple开发者网站上阅读了一些示例程序 我发现几乎所有的应用程序都包含一个词叫做 NSBundle https developer apple com documentation foun
  • 使用时间跨度对具有相同值的连续行进行分组

    抱歉标题含糊 我只是不知道如何描述这个难题 给出一个教室的时间表如下 Classroom CourseName Lesson StartTime EndTime 1001 Course 1 Lesson 1 0800 0900 1001 C
  • 在 ASP.NET 中发送大量电子邮件

    这是我发送大量电子邮件的代码 我想优化此代码以确保它能够正常工作并且可以成功发送所有电子邮件 我应该怎么办 我知道在发送之间设置中断可能很有用 但我该怎么做呢 主要问题是避免将电子邮件分类为垃圾邮件并减少发送失败的电子邮件数量 var li
  • 使用 Chrome Identity API 获取 id_token

    我正在开发一个 Google Chrome 扩展程序 以允许用户使用他们的 Google 帐户进行身份验证 我决定使用Chrome Identity API 要对我的应用程序中的用户进行身份验证 我需要获取 ID Token 签名令牌 有没
  • 未捕获的类型错误:无法读取 null 的属性“on”[重复]

    这个问题在这里已经有答案了 我收到这个未捕获的类型错误 我不确定是什么原因造成的 也许与 JQuery 有关 这是确切的代码 when add to cart link is clicked addtocart on click funct
  • 使用 javascript 将外部 .htm 文件加载到 div 中

    所以我得到了这个代码 JavaScript html a href file htm class ajax Link a 它在 Firefox 中完美运行 但是当我在 Chrome 中单击链接时 什么也没有发生 而 IE 只是打开一个包含该
  • R 中的 padr:以用户定义的间隔进行填充

    我正在以 5 分钟的时间间隔处理时间序列数据 部分 5 分钟时间序列缺失 我想对数据集重新采样 以用 NaN 值填充缺失的 5 分钟时间段 我在这里找到了有关如何解决此问题的大量信息 R 插入缺少日期 时间的行 https stackove
  • 在数组中查找几个感兴趣的区域

    假设我进行了一项实验 其中我让 python 程序运行了很长一段时间 在那段时间里 我对一些数量与时间的关系进行了多次测量 每次测量都以 1 到 3 秒之间的某个值分隔 所使用的时间步长比该值小得多 比如 0 01 秒 即使只取 y 轴 这