Sono nuovo in Python e sto cercando di eseguire alcune operazioni di elaborazione del segnale di base e sto avendo un serio problema di prestazioni. C'è un trucco Python per fare questo in modo vettorializzato? Fondamentalmente sto cercando di implementare un filtro del primo ordine, ma dove le caratteristiche del filtro possono cambiare da un campione all'altro. Se fosse solo un filtro, userei numpy.signal.lfilter(), ma è un po 'più complicato. Ecco il frammento di codice che va molto lentamente:Iterazione veloce di array numpy
#filter state
state = 0
#perform filtering
for sample in amplitude:
if(sample == 1.0): #attack filter
sample = (1.0 - att_coeff) * sample + att_coeff * state
else: #release filter
sample = (1.0 - rel_coeff) * sample + rel_coeff * state
state = sample