【问题标题】:Computing covariance matrix using numpy and generators使用 numpy 和生成器计算协方差矩阵
【发布时间】:2015-05-06 05:25:20
【问题描述】:

Numpy 具有计算数组协方差的功能,这很好。但是,我想使用生成器来节省内存。有没有办法在不编写我自己的 cov 函数的情况下做到这一点?

【问题讨论】:

  • 我们可能需要更多关于数组大小等的信息,以准确突出您要如何/为什么要使用生成器
  • 嗯,这个问题首先是学术性质的。我知道在很多情况下构建可能不是正确的方法,但这正是我想讨论的。
  • 如果您查看cov (github.com/numpy/numpy/blob/v1.9.1/numpy/lib/…) 的来源,传入的所有内容都将被复制并转换为np.array。因此,您不会通过将生成器传递给cov 来节省任何内存。如果你真的想要生成器,我认为你会坚持编写自己的函数。

标签: python numpy generator


【解决方案1】:

您可以使用以下实现:

from numpy import outer

def gen_cov(g):
    mean, covariance = 0, 0
    for i, x in enumerate(g):
       diff = x - mean
       mean += diff/(i+1)
       covariance += outer(diff, diff) * i / (i+1)
    return covariance/i

您可能想要使用不同于numpy.outer 的东西,具体取决于生成器元素是什么。这是this answer 的 Python 实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2011-11-25
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2020-04-13
    • 2017-08-27
    相关资源
    最近更新 更多