当前位置: 首页 > 面试题库 >

计算numpy数组中长度连续变化的值的连续出现

通京
2023-03-14
问题内容

假设我在numpy数组中有一堆数字,并且根据返回布尔数组的条件对它们进行了测试:

np.random.seed(3456)
a = np.random.rand(8)
condition = a>0.5

并使用此布尔数组,我想计算True连续出现的所有长度。例如,如果我有,[True,True,True,False,False,True,True,False,True]我想回去[3,2,1]

我可以使用以下代码来做到这一点:

length,count = [],0
for i in range(len(condition)):

    if condition[i]==True:
        count += 1
    elif condition[i]==False and count>0:
        length.append(count)
        count = 0

    if i==len(condition)-1 and count>0:
        length.append(count)

    print length

但是是否已经为此或python,numpy,scipy等函数实现了任何功能,该函数计算给定输入在列表或数组中连续出现的长度?


问题答案:

这是使用的解决方案itertools(可能不是最快的解决方案):

import itertools
condition = [True,True,True,False,False,True,True,False,True]
[ sum( 1 for _ in group ) for key, group in itertools.groupby( condition ) if key ]

Out:
[3, 2, 1]


 类似资料:
  • 问题内容: 我正在尝试计算股票收益数据中连续上升的天数- 因此,如果正数日为1,负数为0,则应该返回一个列表。 我来到了一个解决方案,它在代码行数方面很整洁,但是 非常 慢: 我猜想我遍历整个列表太多次了。是否有一种很好的Pythonic方式可以实现我想要的,而只需要遍历一次数据?我可以自己编写一个循环,但想知道是否有更好的方法。 谢谢! 问题答案: 为什么痴迷于超pythonic的做事方式?可读

  • 问题H[最长自然后继数]如果第二个是自然数序列中第一个的后继数(1和2是自然后继数),则两个连续的整数是自然后继数。编写一个程序,读取一个数字N,后跟N个整数,然后打印连续自然后继的最长序列的长度。示例: 输入 7 2 3 5 6 7 9 10输出3这里是我的代码到目前为止有人能帮我吗

  • 问题内容: 有没有一种方法可以获取表示行中NULL字段数的列?这将在SELECT语句中。 例如: 更新:我想要此查询,以便我可以基于给定书的有多少会员销售进行排序。因此,无论哪个会员,拥有3个会员的排名都会比拥有2个会员的排名高。我的数据库中大约有七个会员,并且会不断增长。因此,任何要求指定每个会员字段的查询都可能太长 桌子: Affiliates_Cache- 主键是Affiliate_ISBN

  • 本文向大家介绍JavaScript实现列出数组中最长的连续数,包括了JavaScript实现列出数组中最长的连续数的使用技巧和注意事项,需要的朋友参考一下 原始题目: 给定一个无序的整数序列, 找最长的连续数字序列。 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]。 小菜给出的解法:   调用说明:      方法名称:         

  • 问题内容: 我有以下数组 我想找到连续为零的数组的开始和结束索引,输出上方的数组如下所示 我想做得尽可能高效。 问题答案: 这是一个相当紧凑的矢量化实现。我已经更改了一些要求,所以返回值有点“ numpythonic”:它创建一个形状为(m,2)的数组,其中m是零的“游程”数。第一列是每次运行中前0个的索引,第二列是运行后第一个非零元素的索引。(例如,此索引模式匹配切片的工作方式以及函数的工作方式

  • 问题内容: 感谢Mike提出的添加创建/插入语句的建议。 我想添加一个新列,即“当前条纹天数”,因此 结果 如下所示: 但我不知道如何将技巧与其他窗口功能结合使用以获取正确的结果。 问题答案: 在此表上构建(不使用SQL关键字“ date”作为列名。): 询问: 从另一个减去a得到一个。由于您一直在寻找连续的日子,因此下一行将增加 一 。如果从中减去,则整个条纹最终将归入同一组()。然后,很容易按