回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>更清楚地说,让我重述一下我最初在下面提出的问题。</p>
<p>我有一系列的数据点,当有人迈出一步,然后又迈出一步时,它们的振幅会上升或下降。当脚离地时为零。</p>
<p>一个简单的例子如下:</p>
<pre><code> data_array = (0,0,0,10,20,50,40,30,10,0,0,0,0,0,10,20,50,40,30,10,0,0)
</code></pre>
<p>我通过记录一个数组中的开始(所有开始的索引)和另一个数组中的停止来确定每个步骤何时开始和停止。</p>
<p>开始=(4 15)</p>
<p>停止=(9 20)</p>
<p>问题是:现在,我想将每个步骤的实际数据从初始数组中分割出来,并将它们分成列。</p>
<p>[注:如有必要,我们知道start或stops数组中的数据量所采取的步骤数。]</p>
<p>2010年</p>
<p>20 20个</p>
<p>50 50个</p>
<p>40 40个</p>
<p>30 30个</p>
<p>2010年</p>
<p>我不知道如何使用这些开始和停止索引来分割初始数组。或者,我没有找到过滤函数来分割步骤。</p>
<p><strong>BTW(第二次编辑)</strong>
下面是一些我正在使用的代码,如果有帮助的话:</p>
<pre><code>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
</code></pre>
<p><em><strong>原始问题</p>
<p>在这种类型的数组中:</p>
<pre><code>data_array = (0,0,0,10,20,50,40,30,10,0,0)
</code></pre>
<p>我确定值在20以上和20以下。我将这些索引返回为开始(高于20)和停止(低于20),方法是:</p>
<pre><code>startstop = np.vstack((ind[::2], ind[1::2])).T
starts1=np.vstack((ind[::2])).T
stops1=np.vstack((ind[1::2])).T
</code></pre>
<p>有人能用numpy(或不用)把我指向正确的方向吗?这样我就可以用其中一个数组(startstop,starts1,stops1)提取数据数组中的所有值,得到:</p>
<pre><code>new_array = (50,40,30)
</code></pre>
<p>谢谢,
斯科特</p>