Ho bisogno di un modo rapido per mantenere un massimo di un array Numpy. Ad esempio, se il mio array è stato:Numero massimo di valori di array numpy
x = numpy.array([11,12,13,20,19,18,17,18,23,21])
che vorrei:
numpy.array([11,12,13,20,20,20,20,20,23,23])
Ovviamente avrei potuto farlo con un po 'di ciclo:
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
Ma le mie matrici avere centinaia di migliaia di voci e ho bisogno di chiamare questo molte volte. Sembra che debba esserci un trucco per liberare il loop, ma non riesco a trovare nulla che funzioni. L'alternativa sarà scrivere come estensione C, ma sembra che reinventerò la ruota.
direi che il massimo cumulativo di corsa massima suggerisce una finestra per me. sfortunatamente googling per quello non rivela nulla di utile. –
Non ho installato numpy, ma potrebbe funzionare max.accumulate. controlla "accumula" nei documenti. –
@andrew max non ha un attributo di accumulo in numpy. Sarebbe stata una buona soluzione integrata se lo avesse fatto. – JoshAdel