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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)