2016-08-31 10 views
1

私はカーブであるパンダシリーズのデータ​​を持っています。numpy/quantizeによる幾何学的丸め?

「足踏みさせる」ように丸めたいです。さらに、私はステップを現在の値のおよそ10%以内にしたい。 (これを置く別の方法は、ステップを10%単位で、すなわち幾何学的に増加させたいということです)。

私は繰り返し、ゆっくりと何か書いている:私はこのコードを使用したくない

def chunk_trades(A): 
    try: 
     last = A[0] 
    except: 
     print(A) 
     raise 
    new = [] 
    for x in A.iteritems(): 
     if not last or np.abs((x[1]-last)/last) > 0.1: 
      new.append(x[1]) 
      last = x[1] 
     else: 
      new.append(last) 
    s = pd.Series(new, index=A.index) 
    return s 

を。

私は、これを行うより速く、pythonicな方法を見つけようとしています。私はnumpy.digitize()を使ってみましたが、私はそれが私が探しているとは思いません。どのようにこれに最も近づくためのアイデア? 、対数空間へ

np.exp(np.around(np.log(np.abs(j)), decimals=1)) * np.sign(j) 

地図丸めを行い、バック変換:

+0

なぜあなたは 'numpy.digitize'を望んでいませんか? – VBB

+0

範囲は潜在的に0から無限大です。幾何学的にする方法がわかりません。 – cjm2671

+0

OK私はちょうどこれを思いついた:正しい方向の一種であるnp.exp(round(10 * np.log(abs(j)))/ 10)... – cjm2671

答えて

1

OK、私は解決策のようなものであるべきだと思います。

関連する問題