2 thoughts on “有没有 reset 的 cumsum 函数

  1. a = np.array([-1,-1,-1,1,1,1,1,-1,-1])
    bounds = np.r_[0, np.argwhere(np.diff(a>0, prepend=0)).ravel(), a.shape[0]]
    np.concatenate([np.cumsum(a[i:j]) for i, j in zip(bounds[:-1], bounds[1:])])

  2. 可能快一点,尤其是 1, -1 交错很厉害的时候
    import pandas as pd
    b = pd.Series(np.insert(a, np.argwhere(np.diff(a>0, prepend=0)).ravel(), 0))
    cum = b.cumsum()
    cum = (cum -cum.where(b==0).ffill().fillna(0)).values
    cum = cum[cum!=0]

发表评论

电子邮件地址不会被公开。 必填项已用*标注