Giter VIP home page Giter VIP logo

Comments (2)

jxxplzwakeup avatar jxxplzwakeup commented on May 25, 2024 1
import numpy as np
import numba


def rolling_window(a, window):
    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
    strides = a.strides + (a.strides[-1],)
    return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
                                           

def AVEDEV2(arr, N):
    res = np.empty(len(arr))
    res[: N-1] = np.nan
    tmp = rolling_window(arr, N)
    
    # for i, arr in enumerate(tmp):
    #     res[N+i-1] = np.mean(np.abs(arr - np.mean(arr)))
        
    return _avedev(tmp, res, N)

@numba.jit
def _avedev(rolling_arr, res, N):
    i = 0
    for arr in rolling_arr:
        res[N+i-1] = np.mean(np.abs(arr - np.mean(arr)))
        i += 1
    return res

Test

arr = np.random.randn(10000)

In [63]: %timeit AVEDEV2(arr, 20) # My version
Out [63]: 1.06 ms ± 1.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [64]: %timeit AVEDEV(arr, 20) # original version
Out [64]: 2.29 s ± 12.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

from mytt.

mpquant avatar mpquant commented on May 25, 2024

能优化AVEDEV就能提高效率

def AVEDEV(S, N):         #平均绝对偏差  (序列与其平均值的绝对差的平均值)   
    return pd.Series(S).rolling(N).apply(lambda x: (np.abs(x - x.mean())).mean()).values 

from mytt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.