假设我有一个数组,是
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]))
带切片的单线-
((test[:-1]==0) & (test[1:]!=0)).sum()
另一种使用相同掩码的方法-
m = test==0
((m[:-1]) & (~m[1:])).sum()