假设我有一个包含一系列数字的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等函数可以计算列表或数组中给定输入的连续出现次数的长度?