几何圆形与numpy /量子化?

时间:2016-08-31 08:47:24

标签: python pandas numpy

我有一个大熊猫系列数据,这是一条曲线。

我希望以这样一种方式对其进行处理,以使其“步进”。此外,我希望步骤大致在现值的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()但我并不认为这是我正在寻找的东西。关于如何最好地解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:1)

好的,我认为解决方案应该是这样的:

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

映射到对数空间,进行舍入,转换回来。