为了更清楚,让我改写我最初在下面提出的问题。
我有一系列数据点,当有人迈出一步然后又迈出一步时,这些数据点的幅度会上升和下降。零是当脚离开地面时。
一个简单的示例如下所示:
data_array = (0,0,0,10,20,50,40,30,10,0,0,0,0,0,10,20,50,40,30,10,0,0)
我通过在一个数组中记录开始(所有开始的索引)和在另一个数组中的停止来确定每个步骤何时开始和停止。
开始 = (4 15)
停止 = (9 20)
问题:现在,我想将每个步骤的实际数据从初始数组中分割出来,并将它们分成列。
[注意:如果有必要,我们知道开始或停止数组中的数据量所采取的步数。]
10 10
20 20
50 50
40 40
30 30
10 10
我不知道如何使用这些开始和停止索引来分割初始数组。或者,我没有找到过滤功能来分割步骤。
顺便说一句(第二次编辑) 如果有帮助,这是我正在使用的一些代码:
sigma = 5
threshold = 30
above_threshold = gaussian_filter(Fz, sigma=sigma) > threshold
#---INDEX ALL STATE CHANGES---
ind = np.where(np.diff(above_threshold))[0] + 1
print ind
原始问题
在这种类型的数组中:
data_array = (0,0,0,10,20,50,40,30,10,0,0)
我确定值何时高于 20 和低于 20。我通过以下操作将这些索引返回为开始(高于 20)和停止(低于 20):
startstop = np.vstack((ind[::2], ind[1::2])).T
starts1=np.vstack((ind[::2])).T
stops1=np.vstack((ind[1::2])).T
有人可以使用 numpy(或不使用)指向正确的方向,以便我可以使用这些数组之一(startstop、starts1、stops1)提取 data_array 中的所有这些值来得到这个:
new_array = (50,40,30)
谢谢,斯科特