【问题标题】:Covariance with a columns与列的协方差
【发布时间】:2015-06-09 10:40:39
【问题描述】:

如果我有一个带有 X.shape=(m,n) 的 numpy 数组 X 和带有 y.shape=(m,1) 的第二列向量 y,我如何使用 for 循环计算 X 的每一列与 y 的协方差?我希望结果是(m,1)(1,m)

【问题讨论】:

  • 你看过 np.cov() 函数吗?似乎适用于与向量相关的矩阵。看,docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html
  • 是的,但我正在处理文本数据,np.cov 将计算 X 矩阵中的列之间的协方差,该矩阵有 100000 列。这会很慢。
  • 输出的大小不应该是1xnnx1吗?
  • @Divakar,你是对的,谢谢你的回答。

标签: python numpy scipy vectorization


【解决方案1】:

假设输出的形状为(1,n),即A 的每一列与Bcovariance 操作的标量,因此n 的列以n 结尾标量,您可以在此处使用两种使用 covariance formula 的方法。

方法 #1:使用广播

np.sum((A - A.mean(0))*(B - B.mean(0)),0)/B.size

方法 #2:使用矩阵乘法

np.dot((B - B.mean(0)).T,(A - A.mean(0)))/B.size

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多