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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ValueError:无法将大小为0的序列复制到维度为56的数组轴相关的知识,希望对你有一定的参考价值。

我得到以下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:位置参数跟随关键字参数

答案

看起来像你在函数调用中的括号不匹配。如果任何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] ,因为这会改变后续计算的结果。

以上是关于ValueError:无法将大小为0的序列复制到维度为56的数组轴的主要内容,如果未能解决你的问题,请参考以下文章

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

ValueError:无法重塑大小为 0 的数组

Python:ValueError:无法将字符串转换为浮点数:'0'

ValueError:无法将字符串转换为浮点数:'62,6'

卷积神经网络中的“ValueError:要求检索元素 0,但序列的长度为 0”

ValueError:在昏暗 2 处预期长度为 0 的序列(得到 1)