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

标签 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

最佳答案

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

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

关于python - 如何减少协方差函数的输出时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56057835/

相关文章:

python - 如何在 Django 中配置 Python 日志记录模块?

python - 从日志文件中提取特定的词(不是关键字)

javascript - 根据浏览器性能添加效果

c++ - 虚拟的弃用协变返回类型

c++ - 如何将协变返回类型与智能指针一起使用?

scala - Scala 中的简单构建器模式

python - 将 Pandas 中的时间序列重新采样为每周一次

python threading.timer 在程序运行超时时设置时间限制

sql - 按名字和姓氏搜索的 Postgresql 查询,我应该创建哪些索引?

c - 循环内的变量声明