ich für eine prägnante Art und Weise suchen, um von:Numpy cumsum Berücksichtigung NaNs
a = numpy.array([1,4,1,numpy.nan,2,numpy.nan])
zu:
b = numpy.array([1,5,6,numpy.nan,8,numpy.nan])
Das Beste, was ich zur Zeit tun kann, ist:
b = numpy.insert(numpy.cumsum(a[numpy.isfinite(a)]), (numpy.argwhere(numpy.isnan(a)) - numpy.arange(len(numpy.argwhere(numpy.isnan(a))))), numpy.nan)
Ist gibt es einen kürzeren Weg, um das Gleiche zu erreichen? Wie wäre es mit einem Cumsum entlang einer Achse eines 2D-Arrays?
numpy hat eine' nancumsum' Funktion in Version 1.12.0 hinzugefügt. Es tut nicht ganz, was Sie direkt wollen, da es Ihnen das Ergebnis "[1, 5, 6, 6, 8, 8]" geben würde. –