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

2024-04-26 06:37:14 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数组

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条回答
网友
1楼 · 发布于 2024-04-26 06:37:14

一个带切片的衬里-

((test[:-1]==0) & (test[1:]!=0)).sum()

重复使用同一面罩的另一种方法-

m = test==0
((m[:-1]) & (~m[1:])).sum()

相关问题 更多 >