熊猫滚动如何在numpy中应用?

时间:2019-05-22 09:41:12

标签: python pandas numpy

我想将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:设置具有序列的数组元素。

能否请您告诉我为什么发生此错误

编辑:

这有效,我在上面的代码中犯了一个初始错误。这正在工作

1 个答案:

答案 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)