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

我感兴趣的事件是当距离低于某个阈值时,我想计算这些事件的持续时间.很容易得到一个b = d

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

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

from pylab import *

threshold = 7

print '.'

d = 10*rand(10000000)

print '.'

b = d

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 '.'

解决方法:

虽然不是numpy原语,但itertools函数通常非常快,所以请尝试这个(并且测量包括这个在内的各种解决方案的时间):

def runs_of_ones(bits):

for bit, group in itertools.groupby(bits):

if bit: yield sum(group)

如果确实需要列表中的值,那么当然可以使用list(runs_of_ones(bits));但也许列表理解可能会略微加快:

def runs_of_ones_list(bits):

return [sum(g) for b, g in itertools.groupby(bits) if b]

转向“numpy-native”的可能性,那么:

def runs_of_ones_array(bits):

# make sure all runs of ones are well-bounded

bounded = numpy.hstack(([0], bits, [0]))

# get 1 at run starts and -1 at run ends

difs = numpy.diff(bounded)

run_starts, = numpy.where(difs > 0)

run_ends, = numpy.where(difs < 0)

return run_ends - run_starts

再次:确保在实际的示例中针对彼此对比解决方案!

标签:python,numpy,matlab,matplotlib

python数组长度查询_python – 在numpy数组中查找相同值的序列长度(运行长度编码)...相关推荐

  1. python将数组写入文件_python – 将numpy数组的大小写入二进制文件

    我需要将2D numpy数组写入文件,包括其尺寸,以便我可以从C程序中读取它并创建相应的数组. 我已经编写了一些保存数组的简单代码,可以从C中读取,但如果我首先尝试编写数组的大小,它总会给我一个错误. ...

  2. python给矩阵赋值_python – 基本Numpy数组值赋值

    作为一个小练习,我开始在 python中使用数字代码,我正在尝试制作LDLT算法.只是为了"弄湿脚". 但是我似乎缺乏对numpy数组的基本理解.请参阅以下示例: def ldlt ...

  3. python数组切片效率_python – 对numpy数组切片进行采样的最快方法是什么?

    我有一个3D(时间,X,Y)numpy数组,包含6个小时的时间序列几年. (比如5).我想创建一个采样时间序列,其中包含从可用记录中随机抽取的每个日历日的1个实例(每天5种可能性),如下所示. > ...

  4. python的数组批量赋值_python – 为numpy数组赋值的花式索引

    通常,当您使用数组以这种方式索引另一个数组时,numpy期望每个数组R,C等具有相同的形状.例如,假设您要从此数组中提取非零值: >>> a array([[1, 3, 0, 0], ...

  5. python数组元素复制_python的numpy数组 的复制问题?

    还是一句一句来分析吧 第一句 vector = numpy.array([5, 10, 15, 20]) 用numpy生成一个array对象 : vector 然后第二句 equal_to_ten_o ...

  6. python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)

    python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value) 目 ...

  7. 【Java】从键盘中输入一个值,在数组中查找该值的索引并输出

    问题: 从键盘中输入一个值,在数组中查找该值的索引并输出 代码: package learnjava;import java.util.Scanner;public class demo13 {pub ...

  8. python numpy数据类型_Python之numpy数组学习(一)

    原标题:Python之numpy数组学习(一) 我回来了. 前言 前面已经安装并学习了Python中的科学计算库,今天主要学习下numpy数组. Numpy数组对象 Numpy中的多维数组称为ndar ...

  9. python numpy 子数组_Python利用Numpy数组进行数据处理(一)

    Numpy数组使你可以将许多种数据处理任务表达为简洁的数组表达式(否则需要编写循环).用数组表达式代替循环的做法,通常被称为矢量化. np.meshgrid函数接受两个一维数组,并产生两个二维矩阵(对 ...

最新文章

  1. 【Java】 实现一副扑克牌,包含:洗牌+发牌(3个人,一人5张)+输出牌的信息 的逻辑
  2. ZooKeeper 3.4.5 分布式环境搭建详解
  3. python 核心编程_【02】Python核心编程 (全)
  4. 关于选择,说一个同学的真实故事
  5. java提升性能_提升java性能的基本方法
  6. 个人博客 修改markdown代码块背景颜色
  7. 静态网页制作前夕小记录
  8. 杭电ACM2000题
  9. vue 滑动置顶功能_CSS3 移动端 滚动置顶 吸顶
  10. 使用讯飞tts实现安卓语音中文合成播报
  11. iOS通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完
  12. PLC是怎么工作的?工作原理是什么?
  13. python中sqrt_Python中sqrt函数怎么用
  14. 皮肤水分检测原理及测量电路分析
  15. 只读(Readonly)与禁用(Disable)的区别与使用
  16. CSS入门学习笔记+案例(1)
  17. linux下 不显示光驱,Windows7电脑下不显示光驱盘符的解决方法
  18. 我与电脑2-高中时期
  19. IDEA插件之Json Parser
  20. c#dataview遍历_[C#] DataView用法

热门文章

  1. 将Excel明细表按指定模板样式批量生成新表,也可生成工作簿
  2. 猪脸识别正式开赛!杨强、车品觉实力助阵,关于刘强东举办的这场大赛,你需要知道更多
  3. android和ios报价,安卓和iOS用户为啥转换阵营? 价格和体验是主要因素
  4. 发现一款java鉴权认证框架sa-token(目前好像坑还很多)
  5. java门禁系统设计流程图_RFID门禁系统代码+pcb+流程图+论文+参考资料
  6. 项目1:中国计算机设计大赛赛事统计
  7. 数商云采购管理系统解决方案:助力企业采购平台数字化转型
  8. 《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录
  9. 【Python】turtle库的风轮绘制、蟒蛇绘制、八角形绘制、叠边形绘制
  10. 400 、401、403、404状态码