Cumulative sum after 64 in Python(Conditional Cumulative sum)
我是Python的新手。我不知道如何在Python中执行以下函数。我可以在r中完成这项工作,但不能在python中完成。有人能帮我吗?
我想得到计数器值的累积和,一旦它达到64,
以下是我的数据,
1 2 | x = [57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 61, 61, 62, 62, 1, 1, 11, 16, 16, 16, 16, 16, 16, 22, 22, 22, 27, 28] |
我想要计数达到64后的累积和。我不知道如何在Python中做到这一点。
以下是我需要的输出,
1 2 | x = [57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 61, 61, 62, 62, 65, 65, 75, 80, 80, 80, 80, 80, 80, 86, 86, 86, 91, 92] |
这基本上是一个计数器,所以会有很多次重置。这个下面是我使用的R代码,
1 2 | x1<-cumsum(c(0,diff(sub$x)<0)) sub$x<-sub$x+64*x1 |
有人能帮我用python做这个吗?
numpy中的
1 2 3 4 5 6 7 8 9 10 11 | In [125]: x Out[125]: array([ 57., 57., 57., 57., 57., 57., 58., 58., 58., 58., 61., 61., 62., 62., 1., 1., 11., 16., 16., 16., 16., 16., 16., 22., 22., 22., 27., 28.]) In [126]: (np.ediff1d(x, to_begin=[0])<0).cumsum()*64 + x Out[126]: array([ 57., 57., 57., 57., 57., 57., 58., 58., 58., 58., 61., 61., 62., 62., 65., 65., 75., 80., 80., 80., 80., 80., 80., 86., 86., 86., 91., 92.]) |