python – 在NaN重置Cumsum

python – 在NaN重置Cumsum,第1张

概述如果我有一个名为ts的pandas.core.series.Series,则为1或NaN,如下所示: 3382 NaN3381 NaN...3369 NaN3368 NaN...15 110 NaN11 112 113 19 NaN8 NaN7 NaN6 NaN3 NaN4 如果我有一个名为ts的pandas.core.serIEs.SerIEs,则为1或NaN,如下所示:

3382   NaN3381   NaN...3369   NaN3368   NaN...15     110   NaN11     112     113     19    NaN8    NaN7    NaN6    NaN3    NaN4      15      12    NaN1    NaN0    NaN

我想计算这个系列的cumsum但它应该在NaN的位置重置(设置为零),如下所示:

3382   03381   0...3369   03368   0...15     110     011     112     213     39      08      07      06      03      04      15      22      01      00      0

理想情况下,我想有一个矢量化解决方案!

我曾经在Matlab看到过类似的问题:
Matlab cumsum reset at NaN?

但我不知道如何翻译这一行d = diff([0 c(n)]);

解决方法 您的Matlab代码的简单Numpy翻译是这样的:

@R_419_5565@ numpy as npv = np.array([1.,1.,np.nan,1.])n = np.isnan(v)a = ~nc = np.cumsum(a)d = np.diff(np.concatenate(([0.],c[n])))v[n] = -dnp.cumsum(v)

执行此代码将返回结果数组([1.,2.,3.,0.,4.,1.]).此解决方案仅与原始解决方案一样有效,但如果它不足以满足您的需求,它可能会帮助您提供更好的解决方案.

总结

以上是内存溢出为你收集整理的python – 在NaN重置Cumsum全部内容,希望文章能够帮你解决python – 在NaN重置Cumsum所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1191100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存