假设我进行了一项实验,其中我让 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' 数组array
s (tuple
s?)以不同的长度捕获事件,以便我稍后可以单独分析它们。我不能纯粹用一个来分开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]]
这是解决这个问题的好方法吗?第一步也让我有点困惑。我还需要保留事件中那些小的低强度区域。
重新编辑!我将比较两个信号,每个信号都作为时间的函数进行测量,因此它们将被压缩到一个元组列表中。