基于数组numpy中的值的矢量化累积和

时间:2018-04-19 14:33:57

标签: python arrays numpy data-science

我正在寻找一种矢量化的方法来进行累积和,每次出现0时都会重置。例如,我们有一个数组ar = np.array([0,1,0,1,1,0,1,0])。我想要的输出是np.array([0,1,0,1,2,0,1,0])

我有以下实现,但它们没有完全矢量化。

Method 1:
s = pd.Series(ar)
data = s.groupby(s.eq(0).cumsum()).cumsum().tolist()

Method 2:
def intervaled_cumsum(ar):
    split = np.array((np.split(ar, np.where(ar<1)[0])))[1:]
    sizes = np.array([len(i) for i in split])
    out = ar.copy()

    arc = ar.cumsum()
    idx = sizes.cumsum()

    out[idx[0]] = ar[idx[0]] - arc[idx[0]-1]
    out[idx[1:-1]] = ar[idx[1:-1]] - np.diff(arc[idx[:-1]-1])

    return out.cumsum()

我怎么可能在python中使用任何库真的这样做,可能是numpy以外的东西?

喊出这个帖子Multiple cumulative sum within a numpy array

的答案

0 个答案:

没有答案