使用 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)
我有 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)