2010-12-02 18 views
6
Belki

değil böyle büyük bir anlaşma, ancak bu takip etmek beni üzüyor: bununlaDöngüsel olmayan bir diziyi döngü olmadan temizleyebilir miyim?

deltas = data[1:] - data[:-1]

: Bu özel Örneğin

for i in range(len(deltas)): 
     if deltas[i] < 0: deltas[i] = 0 
     if deltas[i] > 100: deltas[i] = 0 

... daha iyi bir yolu orada temizlik bölümünü yapmak?

İkinci bölüm soru: Temizleyici kurallar daha karmaşıksa veya bu örnekten daha az karmaşıksa. Örneğin, tüm negatif sayıları sıfırlamak isteyebiliriz. Ya da daha karmaşık bir haritalama yapıyor olabiliriz.

cevap

9
import numpy as np 
deltas=np.diff(data) 
deltas[deltas<0]=0 
deltas[deltas>100]=0 
Ayrıca

mümkün, ve daha hızlı biraz

deltas[(deltas<0) | (deltas>100)]=0 
+0

edit to deltas [(deltas <0) | (deltalar> 100)] = 0 – Pete

+0

@Pete: Whoops, teşekkürler! – unutbu

1

numpy dizinin her öğesi için bir işlev uygulamak için numpy.vectorize kullanmayı deneyin olduğunu.

İlgili konular