【发布时间】:2014-03-18 01:34:24
【问题描述】:
假设我进行了一个实验,我让一个 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]
我在想这样的事情:
输入:
[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]]
这是处理它的好方法吗?第一步也让我有些困惑。我还需要在事件中保留那些小的低震级区域。
重新编辑!我将比较两个信号,每个信号都是作为时间函数测量的,因此它们将被压缩到一个元组列表中。
【问题讨论】:
-
感谢@CT Zhu 帮我编辑问题=]
-
不客气。不应该根据您的规则将结果
list中的第一个子list拆分为2,1,0,-1或1,0,-1? -
不,这将是 0 值中间事件的示例。可以将每个事件视为正弦波的单个噪声振荡......之间有大的零(ish)区域。
-
不要插入我自己的答案,但听起来你正在描述类似的东西? stackoverflow.com/a/4360778/325565
-
@CTZhu 谢谢你的图片!这是一个很好的例子 =] 到目前为止,我已经看到了一个元素 i 并且如果 sum(abs(A[i],[i+len_threshold)))
标签: python arrays analysis region threshold