実行中の最大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エクステンションとして書くことになりますが、私は車輪を再発明しているようです。
私はmax-running maxの累積が私にウィンドウを示唆していると言います。残念ながらそれでグーグルでは何も役に立たない。 –
numpyがインストールされていませんが、max.accumulateが動作する可能性があります。ドキュメントに「蓄積」をチェックしてください。 –
@andrew maxにはnumpyにaccumulate属性がありません。もしそれがあったとしても、それは良い組み込みのソリューションでした。 – JoshAdel