Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 定义函数以返回样本协方差_Python - Fatal编程技术网

Python 定义函数以返回样本协方差

Python 定义函数以返回样本协方差,python,Python,我有两个向量,我试图在函数中使用它们来返回样本协方差。 有人能帮我修改程序吗?一般来说,我对python和编程都是新手 xv= array([8., 9.5, 7.8, 4.2, -7.7, -5.4, 3.2]) yv= array([8.9, 2.0, 4.8, -4.2, 2.7, -3.4, -5.9]) def cov(x,y): if (len(x) != len(y) [Stop] x.bar = mean(x) y.b

我有两个向量,我试图在函数中使用它们来返回样本协方差。 有人能帮我修改程序吗?一般来说,我对python和编程都是新手

xv= array([8., 9.5, 7.8, 4.2, -7.7, -5.4, 3.2])
yv= array([8.9, 2.0, 4.8, -4.2, 2.7, -3.4, -5.9])

def cov(x,y):
    if (len(x) != len(y)
        [Stop] 
        x.bar = mean(x) 
        y.bar = mean(y) 
        N = len(x)      
    Cov = (sum((x-x.bar)*(y-y.bar))) / (N-1.0) 
    return(Cov) 

您可以尝试查看广泛使用的
numpy
包,了解协方差等操作:
这是我的版本,没有使用外部库。协方差方程来自维基百科:


我以这种方式重写了函数:

def cov(x,y):
    if (len(x) != len(y)):
        sys.exit()
    x_bar = float(sum(x)/len(x))
    y_bar = float(sum(y)/len(y))
    N = len(x)
    sum_xy = 0
    for i in range(len(x)):
        sum_xy += (x[i]-x_bar)*(y[i]-y_bar)
    return(sum_xy/(N-1.0))

当前代码的具体问题是什么?从x.bar=mean(y)开始…我收到了无效的语法消息。不知道为什么?x.bar不是正确的变量名;不要在变量名中使用“.”;x_bar或xbar是您想要使用的。感谢您的帮助,此操作运行正常。但我只是在寻找样本协方差。我相信它的12.495超出了返回的矩阵。是因为我们的公式不同吗?是否希望返回矩阵?因为只有两个变量,所以返回的值是这两个变量之间的协方差。我只希望返回一个数字。只是样本协方差。当前函数返回一个数字。那问题出在哪里呢?别担心,我一时糊涂,但现在已经不是了。我真的很感谢你的帮助。谢谢
def cov(x,y):
    if (len(x) != len(y)):
        sys.exit()
    x_bar = float(sum(x)/len(x))
    y_bar = float(sum(y)/len(y))
    N = len(x)
    sum_xy = 0
    for i in range(len(x)):
        sum_xy += (x[i]-x_bar)*(y[i]-y_bar)
    return(sum_xy/(N-1.0))