我想将pandas.rolling(window).apply(func)
范例应用于numpy数组。搜索came across this function for numpy时。这就是我所做的。
def rolling_apply(fun, a, w):
r = np.empty(a.shape)
r.fill(np.nan)
for i in range(w - 1, a.shape[0]):
r[i] = fun(a[(i-w+1):i+1])
return r
def test(x):
return x.sum()
arr=np.random.rand(20)
e=rolling_apply(test,arr,10)
运行时出现此错误
ValueError:设置具有序列的数组元素。
能否请您告诉我为什么发生此错误
编辑:
这有效,我在上面的代码中犯了一个初始错误。这正在工作
答案 0 :(得分:1)
数组形状和索引有点混乱。快速修复:
def rolling_apply(fun, a, w):
r = np.empty((a.shape[0]-w+1, w))
r.fill(np.nan)
for i in range(w - 1, a.shape[0]):
r[i-w+1] = fun(a[(i-w+1):i+1])
return r
def test(x):
return x*2
arr=np.random.rand(20)
e=rolling_apply(test,arr,10)