下面的numpy代码段将返回输入数组的cumsum,每次遇到NaN时,它都会重置。在
v = np.array([1., 1., 1., np.nan, 1., 1., 1., 1., np.nan, 1.])
n = np.isnan(v)
a = ~n
c = np.cumsum(a)
d = np.diff(np.concatenate(([0.], c[n])))
v[n] = -d
result = np.cumsum(v)
以类似的方式,如果累计数超过某个值,使用向量化熊猫或numpy操作,我如何计算一个累计值重置?在
例如,限值=5,in=[1,1,1,1,1,1,1,1,1,1,1],out=[1,2,3,4,5,1,2,3,4,5]
如果数组中的数字都是正数,那么使用
cumsum()
和模运算符可能是最简单的:然后,您可以将任何零值设置回限制,以获得所需的数组:
^{pr2}$这里有一个使用Pandas的
expanding_apply
方法的通用解决方案。(我没有做过广泛的测试…)首先定义一个修改的
cumsum
函数:将函数应用于数组,如下所示:
以下是应用于另一个更有趣系列的函数:
相关问题 更多 >
编程相关推荐