ValueError:无法将大小为0的序列复制到维度为56的数组轴

问题描述 投票:0回答:1

我得到以下56列,填充随机数:

dataframe

我想要的是添加一个额外的列,其中列1-56的自相关具有一定的滞后。因此,如果滞后为1,则结果为0.42,当滞后为2时,0.06等等。

这是我使用的代码:

def autocorr(x, t):
return np.corrcoef(np.array([x[0:len(x)-t], x[t:len(x)]]))

其中,我认为,x是数据帧,t是滞后。

但是,当我尝试添加具有lag = 1的自相关的列时,我得到:

df["output"] = autocorr(df,1)

error:ValueError:无法将大小为0的序列复制到维度为56的数组轴

我做错了什么,或者是否有更简单的方法来计算具有定义滞后的自相关?

感谢帮助

史蒂芬

更新:我一直在努力调整,但我找不到它。任何人?????

我尝试了以下代码:

def autocorr(x, t):
return np.corrcoef(np.array([x[:len(x)-t], x[t:len(x)]]))

但这给了我错误:

文件“”,第1行autocorr(df(axis = 1,1))^ SyntaxError:位置参数跟随关键字参数

python statistics jupyter-notebook
1个回答
1
投票

看起来像你在函数调用中的括号不匹配。如果任何autocorr(df(axis=1, 1))应该是autocorr(df(axis=1), 1),但pd.DataFrame对象不可调用。

pd.Series.autocorr(lag=1)功能不能实现你想要的吗?

import pandas as pd, numpy as np
series = pd.Series(np.random.randint(100, high=200, size=56))
print(series.autocorr(lag=1))

结果值与您的预期相似。

更新:关于你原来的问题:因为你有一行len(x)是1而x[0:len(x)-1]是一个空阵列!另外:在这种情况下,np.corrcoef返回qzxswpoi形式的2x2矩阵。当这种方式调用时,你的[[1, C], [C, 1]]函数会起作用

autocorr

我不会将结果附加到df1 = df.copy(deep=True) df1["output"] = autocorr(df.T[0], 1)[0, 1] ,因为这会改变后续计算的结果。

© www.soinside.com 2019 - 2024. All rights reserved.