我需要一种快速的方法来保持一个numpy数组的运行最大值.例如,如果我的数组是:
x = numpy.array([11,12,13,20,19,18,17,18,23,21])
Run Code Online (Sandbox Code Playgroud)
我想要:
numpy.array([11,12,13,20,20,20,20,20,23,23])
Run Code Online (Sandbox Code Playgroud)
显然我可以通过一个小循环来做到这一点:
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
Run Code Online (Sandbox Code Playgroud)
但我的阵列有数十万个条目,我需要多次调用它.似乎必须有一个笨拙的技巧来删除循环,但我似乎找不到任何可行的东西.另一种方法是将其写为C扩展,但似乎我要重新发明轮子.
Cha*_*tie 48
numpy.maximum.accumulate 适合我.
>>> import numpy
>>> numpy.maximum.accumulate(numpy.array([11,12,13,20,19,18,17,18,23,21]))
array([11, 12, 13, 20, 20, 20, 20, 20, 23, 23])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9251 次 |
| 最近记录: |