如何减少协方差函数的输出时间

时间:2019-05-09 10:54:51

标签: python performance covariance

我写了一个用于协方差矩阵的函数,我得到的输出是正确的,但是代码的问题是,高维数据集花费了太多时间。

能否请您帮我修改以下代码,以减少输出时间?

def cov_variance(norm_data,mean_of_mat):
    col = len(norm_data)
    row = len(norm_data[0])
    out =[]
    i = 0 
    sum_of_covar = 0
    freezrow  = 0
    flag = 1
    while flag<=len(mean_of_mat):
        for r in range(row):
            for c in range(col):
                sum_of_covar+=(((norm_data[c][freezrow])-mean_of_mat[freezrow])*\
                               ((norm_data[c][r])-mean_of_mat[i]))
                freezrow=freezrow
            out.append(sum_of_covar)
            i+=1
            sum_of_covar=0
            freezrow=freezrow
        flag+=1
        freezrow+=1
        i=0
    out1 = map(lambda x : x/col-1,out)
    cov_variance_output = reshape(out1,row)
    return cov_variance_output

1 个答案:

答案 0 :(得分:0)

就像Doctorlove已经说过的那样,不要实施自己的。几乎可以肯定,它会更慢和/或更通用(根据我的经验)。

我尝试对此信息发表评论,但是我的代表太低了。您可以在此处找到有关使用numpy计算协方差矩阵的信息:https://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html