我需要一种快速的方法来保持numpy数组的运行最大值。例如,如果我的数组是:
x = numpy.array([11,12,13,20,19,18,17,18,23,21])
我希望:
numpy.array([11,12,13,20,20,20,20,20,23,23])
显然我可以用一个小循环来做到这一点:
def running_max(x):
result = [x[0]]
for val in x:
if val > result[-1]:
result.append(val)
else:
result.append(result[-1])
return result
但我的数组有成千上万个条目,我需要调用多次。似乎有一种numpy技巧可以消除循环,但我似乎找不到任何可行的方法。另一种方法是将其编写为C扩展,但这似乎是重复造轮子。
numpy.maximum.accumulate
- wim