我需要一種快速方法來保持numpy數組的運行最大值。例如,如果我的數組是:運行最大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
但我的陣列有上百成千上萬的條目,我需要多次打電話。看起來似乎有一個移除循環的技巧,但我似乎無法找到任何可行的方法。另一種方法是將其寫成C擴展名,但似乎我會重新發明輪子。
我會說,累計最大 - 運行最大值向我建議一個窗口。不幸的是,谷歌搜索沒有提供任何有用的信息。 –
我沒有安裝numpy,但max.accumulate可能工作。檢查文檔中的「累積」。 –
@andrew max在numpy中沒有累積屬性。如果有的話,那將是一個很好的內置解決方案。 – JoshAdel