Кажется, функция np.maximum.accumulate плохо обрабатывает nan.
np.maximum.accumulate
import numpy as np arr = np.array([1,np.nan,3,1]) np.maximum.accumulate(arr)
дает все nans после 2-го элемента.
Как получить результат [1,np.nan,3,3]?
[1,np.nan,3,3]
Используйте numpy.fmax.accumulate, который игнорирует nan s:
numpy.fmax.accumulate
nan
arr = np.array([1,np.nan,3,1]) np.fmax.accumulate(arr) # array([1., 1., 3., 3.])
Если вам нужно сохранить nan s:
np.where(np.isnan(arr), np.nan, np.fmax.accumulate(arr)) # array([ 1., nan, 3., 3.])