似乎np.maximum.accumulate
函数不能很好地处理nan。
import numpy as np
arr = np.array([1,np.nan,3,1])
np.maximum.accumulate(arr)
在第二个元素之后给出所有的nan。
如何获取结果[1,np.nan,3,3]
?
答案 0 :(得分:2)
使用numpy.fmax.accumulate
,它会忽略nan
:
arr = np.array([1,np.nan,3,1])
np.fmax.accumulate(arr)
# array([1., 1., 3., 3.])
如果您需要保留nan
:
np.where(np.isnan(arr), np.nan, np.fmax.accumulate(arr))
# array([ 1., nan, 3., 3.])