2010-12-02 6 views
6

ないように大したこと、それがこの従って私の心を壊し:これでループなしで配列をクリーンアップすることはできますか?おそらく、

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

:この特定のたとえば

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

を...へのより良い方法がありますクレンジング部分をする?

質問2:クレンジングのルールがこの例より複雑で複雑な場合はどうなりますか?たとえば、すべての負の数を0に変更したいだけかもしれません。あるいは、もっと複雑なマッピングをしているかもしれません。

答えて

9
また
import numpy as np 
deltas=np.diff(data) 
deltas[deltas<0]=0 
deltas[deltas>100]=0 

可能、及びビット速く

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

[編集] deltas [(deltas <0)| (デルタ> 100)] = 0 – Pete

+0

@ペテ:おっと、ありがとう! – unutbu

1

はnumpyの配列の各要素に関数を適用するnumpy.vectorizeを使用してみています。

関連する問題