python - 查找 numpy 数组中两个数字的指定匹配的所有出现次数

标签 python arrays performance numpy

我需要实现的是获取所有索引的数组,其中在我的数据数组中填充零和一的步骤是从零到一。我需要非常快速的解决方案,因为我必须处理数百万个长度为数百万的数组。它将在计算中心运行。例如..

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/

相关文章:

sql - 为什么删除时间比插入时间长

python - Spotify 方法 artist_albums() 不会返回艺术家的所有专辑

javascript - 如何记录图层要素上请求的坐标

java - 是否可以在 java 中交换两个数组索引的值?

java - 尝试创建数组的数组

python - App Engine memcache/ndb.get_multi 的性能问题

c++ - 寻找一种有效的方法来在2个巨大的缓冲区上执行MAX,每个字节一个字节

python - Flask 登录和 LDAP

python - 使用 Sphinx 扩展自动生成 doctest 输出

python - 在一张图中绘制多个 Pandas 数据框