使用 np.cov 的 9 个数组的协方差矩阵

Covariance matrix for 9 arrays using np.cov

我有 9 个不同的 numpy 数组,它们 表示相同的数量,在我们的例子中是 xi。它们每个的长度为 19,即 它们已被合并

这9个数组的区别在于,它们是使用折刀重采样计算的,即每次省略一些元素并重复相同的9次。

我现在想计算协方差矩阵,它的大小应该是 19x19。这个协方差矩阵的对角线元素的平方根应该给我这个数量的误差(xi)每个箱子(总共 19 个箱子)。

协方差矩阵的方程为:

这里xi是数量。 i and j 是长度为 19 的 bin。

我不想手动写代码,所以我尝试 numpy.cov:

vstack = np.vstack((array1,array2,....,array9))

cov = np.cov(vstack)

这给我一个大小为 9x9 而不是 19x19 的矩阵。

这里有什么错误?每个数组,即 array1, array2...etc all are of length 19.

正如您在 docs 示例中看到的那样,输出的形状等于行数的平方。因此,当你有 9 行时,你会得到一个 9x9 矩阵

如果您希望得到 19x19 的矩阵,那么您可能会混合列和行,您应该使用 transpose

vst = np.vstack((array1,array2,....,array9))

cov_matrix = np.cov(vst.T)