矢量化方法来计算 numpy 数组中特殊实例的数量

假设我有一个数组

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]))



青春有我
浏览 95回答 1
1回答

慕田峪7331174

带切片的单线 -((test[:-1]==0) & (test[1:]!=0)).sum()重复使用同一个面具的另一种方式 -m = test==0 ((m[:-1]) & (~m[1:])).sum()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python