首页 > 解决方案 > 计算并发事件的数量

问题描述

这个问题与此处链接的上一个问题有关

所以就我而言,我有这样的文件(示例输入

 0.34
  0.3432
  0.32
  0.35
  0.323
  0.3623
  0.345
  0.32
  0.31
  0.378
  0.34
  0.35
  0.342

第一:在我的情况下,如果 2 个或更多连续值满足给定的截止值 c = 0.33,我将其称为 B。这是由条件 m 给出的,请参见此处:高于某个截止值的连续值的数量

第二:如果 c 是 0.33 并且我想要低于 c 的值,它将打印出 0.32 和 0.323 但我也想打印出 0.35,因为这只是 c 上方的一次出现,它不符合我在 m 中提到的规则因此它也会被打印出来。@kvantour 回答了这个问题。我把这个叫做 F

所以在我的 2 美元中,各州看起来像这样BCBCB

所以我可以计算损坏(B)事件的数量,如下所示(示例输出

2 #this corresponds to no. of frames in first B 
2 #this corresponds to no. of frames in second B 
4 #this corresponds to no. of frames in third B 

有没有办法计算和打印出来。破碎的事件作为一个列表?

标签: pythonbashawk

解决方案


awk救援(与朋友)

$ awk 'NR>1{print ($2>0.33)}' file | uniq -c | awk '$2 && $1>1{print $1}'

2
2
4

解释

NR>1{print ($2>0.33)}打印 1 或 0 是否$2>0.33满足条件,跳过第一个标题行。

uniq -c计算连续重复值(链长)

$2 && $1>1{print $1}当值非零(此处为 1)且长度大于 OP 指定的 1 时,打印链长度。


推荐阅读