我需要实现的是获取所有索引的数组,其中在我的数据数组中填充零和一的步骤是从零到一。我需要非常快速的解决方案,因为我必须处理数百万个长度为数百万的数组。它将在计算中心运行。例如..
data_array = np.array([1,1,0,1,1,1,0,0,0,1,1,1,0,1,1,0])
result = [3,9,13]
最佳答案
试试这个:
In [23]: np.where(np.diff(a)==1)[0] + 1
Out[23]: array([ 3, 9, 13], dtype=int64)
100M 元素数组的时序:
In [46]: a = np.random.choice([0,1], 10**8)
In [47]: %timeit np.nonzero((a[1:] - a[:-1]) == 1)[0] + 1
1 loop, best of 3: 1.46 s per loop
In [48]: %timeit np.where(np.diff(a)==1)[0] + 1
1 loop, best of 3: 1.64 s per loop
关于python - 查找 numpy 数组中两个数字的指定匹配的所有出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39476430/