假设我有一个数组test = np.array([0,2,1,5,3,6,10,0,0,3,2,3,0,0,7,3,6,2,0,0,3,5,4,6])我想知道的是前一个值为零时下一个值不为零的次数;所以对于上面的数组我应该有 4。我写了一个函数来执行此操作,但它的执行速度非常慢。是否有任何我应该将其重新写入的矢量化函数?def count_instance(array):
return int(array[0] > 0) + sum(int(array[i] > 0 and array[i-1] == 0) for i in range(1,array.shape[0]))
1 回答

慕田峪7331174
TA贡献1828条经验 获得超13个赞
带切片的单线 -
((test[:-1]==0) & (test[1:]!=0)).sum()
重复使用同一个面具的另一种方式 -
m = test==0 ((m[:-1]) & (~m[1:])).sum()
添加回答
举报
0/150
提交
取消