numpy.cov() 返回意外的输出



我有一个X数据集,它有9个特征和683行(683x9(。我想取这个 X 数据集和另一个与 X 形状相同的数据集的协方差矩阵。我使用np.cov(originalData, generatedData, rowvar=False)代码来获取它,但它返回形状为 18x18 的协方差矩阵。我希望得到 9x9 协方差矩阵。你能帮我修复它吗?

该方法cov计算您为其提供的所有变量对的协方差。一个数组中有 9 个变量,另一个数组中有 9 个变量。总共是18个。所以你得到 18 x 18 矩阵。(在引擎盖下,cov连接您在计算协方差之前提供给它的两个数组(。

如果您只对第一个数组中的变量与第二个数组中的变量的协方差感兴趣,请选择前半行和后半列:

C = np.cov(originalData, generatedData, rowvar=False)[:9, 9:]

或者一般来说,有两个不一定相等的矩阵 X 和 Y,

C = np.cov(X, Y, rowvar=False)[:X.shape[1], Y.shape[1]:]

最新更新