我需要一种快速方法来保持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