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

问题描述 投票:0回答:1

假设我有一个数组,是

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]))
python arrays numpy
1个回答
1
投票

带切片的单线-

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

另一种使用相同掩码的方法-

m = test==0
((m[:-1]) & (~m[1:])).sum()
© www.soinside.com 2019 - 2024. All rights reserved.