有效地将bin计数的向量转换为bin索引的向量

时间:2014-04-01 10:59:49

标签: python arrays numpy vector scipy

我有一个向量,对应于一系列时间段中发生的事件数。我需要获取一个包含每个事件的时间段索引的向量。

使用普通的Python循环执行此操作非常简单:

import numpy as np

def bincounts2indices(bincounts):
    indices = tuple()
    for ii, count in enumerate(bincounts):
        indices += (ii,) * count
    return np.array(indices)

x = np.array([2, 4, 2, 3, 2, 3, 4, 0, 1, 2])

print bincounts2indices(x)
# [0 0 1 1 1 1 2 2 3 3 3 4 4 5 5 5 6 6 6 6 8 9 9]

不幸的是,这在我的代码中是一个瓶颈。我可以使用像Cython或Numba这样的东西加速它,但这看起来有点过分,我不想添加额外的依赖。

是否有人知道采用纯粹的numpy / scipy方式有效地做到这一点?

0 个答案:

没有答案