2024-04-20 05:38:02 发布
网友
我正在用python做一个基准测试,测试计算a'*a的不同方法,a是nxm矩阵。最快的方法之一是使用numpy.dot()。你知道吗
numpy.dot()
我很好奇,如果我能得到同样的结果,使用numpy.cov()(它给出协方差矩阵),通过某种方式改变权重或通过某种方式预处理A矩阵?但我没有成功。有人知道积A'*A和协方差A之间是否有关系吗,其中A是一个有N行/观测值和M列/变量的矩阵?你知道吗
numpy.cov()
看看^{} source。在函数结束时,它会执行以下操作:
c = dot(X, X_T.conj())
基本上就是你想做的点积。然而,还有各种各样的操作:检查输入,减去平均值,归一化。。。你知道吗
简而言之,np.cov永远不会比np.dot(A.T, A)快,因为在内部它正好包含那个操作。你知道吗
np.cov
np.dot(A.T, A)
也就是说covariance matrix is computed作为
或者在Python中:
import numpy as np a = np.random.rand(10, 3) m = np.mean(a, axis=0, keepdims=True) x = np.dot((a - m).T, a - m) / (a.shape[0] - 1) y = np.cov(a.T) assert np.allclose(x, y) # check they are equivalent
如您所见,如果减去每个变量的平均值并将结果除以样本数(减1),协方差矩阵就相当于原始点积。你知道吗
看看^{} source 。在函数结束时,它会执行以下操作:
基本上就是你想做的点积。然而,还有各种各样的操作:检查输入,减去平均值,归一化。。。你知道吗
简而言之,
np.cov
永远不会比np.dot(A.T, A)
快,因为在内部它正好包含那个操作。你知道吗也就是说covariance matrix is computed作为
或者在Python中:
如您所见,如果减去每个变量的平均值并将结果除以样本数(减1),协方差矩阵就相当于原始点积。你知道吗
相关问题 更多 >
编程相关推荐