相关疑难解决方法(0)

在numpy数组中查找相同值的序列长度(运行长度编码)

在一个pylab程序(也可能是一个matlab程序)中,我有一个数字表示距离的numpy数组:d[t]是时间距离t(我的数据的时间跨度是len(d)时间单位).

我感兴趣的事件是当距离低于某个阈值时,我想计算这些事件的持续时间.很容易得到一组布尔值b = d<threshold,问题归结为计算真实单词长度的顺序b.但我不知道如何有效地做到这一点(即使用numpy原语),并且我使用数组并进行手动更改检测(即当值从False变为True时初始化计数器,只要值为True就增加计数器,当值返回False时,将计数器输出到序列.但这非常缓慢.

如何在numpy数组中有效地检测那种序列?

下面是一些python代码,说明我的问题:第四个点需要很长时间才能出现(如果没有,增加数组的大小)

from pylab import *

threshold = 7

print '.'
d = 10*rand(10000000)

print '.'

b = d<threshold

print '.'

durations=[]
for i in xrange(len(b)):
    if b[i] and (i==0 or not b[i-1]):
        counter=1
    if  i>0 and b[i-1] and b[i]:
        counter+=1
    if (b[i-1] and not b[i]) or i==len(b)-1:
        durations.append(counter)

print '.'
Run Code Online (Sandbox Code Playgroud)

python matlab numpy matplotlib

48
推荐指数
5
解决办法
2万
查看次数

找到1的最长序列的起始位置

我想在我的数组中找到1的最长序列的起始位置:

a1=[0,0,1,1,1,1,0,0,1,1]
#2
Run Code Online (Sandbox Code Playgroud)

我按照这个答案找到最长序列的长度.但是,我无法确定位置.

python numpy scipy

6
推荐指数
1
解决办法
1044
查看次数

标签 统计

numpy ×2

python ×2

matlab ×1

matplotlib ×1

scipy ×1