Python中64后的累计和(条件累计和)
Cumulative sum after 64 in Python(Conditional Cumulative sum)
我是 python 的新手。我不确定如何在 python 中执行以下功能。我可以在 R 中执行此操作。但无法在 python 中执行此操作。有人可以帮我吗?
我想得到计数器值达到64后的累加和,
以下是我的数据,
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 中做到这一点。
下面是我需要的输出,
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 代码,
x1<-cumsum(c(0,diff(sub$x)<0))
sub$x<-sub$x+64*x1
Python有人可以帮我做这件事吗?
NumPy 中的 np.ediff1d(x, to_begin=[0]) < 0
等同于 R 中的 c(0,diff(sub$x)<0)
。
它取连续元素之间的差异,并在结果的左侧填充零。其余的几乎是一对一的对应关系:
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.])
我是 python 的新手。我不确定如何在 python 中执行以下功能。我可以在 R 中执行此操作。但无法在 python 中执行此操作。有人可以帮我吗?
我想得到计数器值达到64后的累加和,
以下是我的数据,
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 中做到这一点。
下面是我需要的输出,
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 代码,
x1<-cumsum(c(0,diff(sub$x)<0))
sub$x<-sub$x+64*x1
Python有人可以帮我做这件事吗?
np.ediff1d(x, to_begin=[0]) < 0
等同于 R 中的 c(0,diff(sub$x)<0)
。
它取连续元素之间的差异,并在结果的左侧填充零。其余的几乎是一对一的对应关系:
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.])