You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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)
如题
The text was updated successfully, but these errors were encountered: