为什么numpy.cov(a,a)没有在所有象限中给出自相关性?



我正在计算一个数据集的协方差,并试图将我的代码与numpy进行比较。

我有100个模拟。还有256个值,所以我的起始数组的形状是(100,256)

测试np。cov函数工作,我试着给它两个相同的数组,即np.cov(a,a)。

我期望cov(a,b)返回) (x (a, x (a, b)(浸(b, a),浸(b, b)

所以我认为对于相同的矩阵我应该得到浸(一)x (,)浸(一)x (a, a)

但情况似乎并非如此。

Pow_i = Pk_dd_pow
Pow_j = Pk_dd_pow
numpy_cov= np.cov(np.array(np.real(Pk_pow_i)).T, np.array(np.real(Pk_pow_j)).T)

给出numpy_cov作为(512,512)数组,正如我所期望的那样。但. .

left_upper = numpy_cov[0:256,0:256]
right_upper=  numpy_cov[256:513,0:256]
right_lower = numpy_cov[256:513,256:513]
left_lower = numpy_cov[0:256,256:513]
print(np.array_equal(right_lower, left_upper))
print(np.array_equal(left_lower, right_upper))
print(np.array_equal(right_lower, right_upper))
print(np.array_equal(left_lower, left_upper))
print(np.array_equal(left_lower, right_lower))

返回
True
True
False
False
False

我认为这四个都应该给出自协方差,那么为什么它们不同呢?请帮助!:)

不清楚它是否会产生此结果,但您可以做的是尝试较小大小的数组下面是一个更基本的例子:

import numpy as np
a = np.array([[1,2,3,4,5],[1,2,3,4,5]])
b = np.array([[10,20,30,40,50],[10,20,30,40,50]])
numpy_cov_aa = np.cov(a,a)
numpy_cov_ab = np.cov(a, b)
numpy_cov_ba = np.cov(b, a)
numpy_cov_bb = np.cov(b, b)
print(numpy_cov_aa)
print('---')
print(numpy_cov_ab)
print('---')
print(numpy_cov_ba)
print('---')
print(numpy_cov_bb)

返回:

[[2.5 2.5 2.5 2.5]
[2.5 2.5 2.5 2.5]
[2.5 2.5 2.5 2.5]
[2.5 2.5 2.5 2.5]]
---
[[  2.5   2.5  25.   25. ]
[  2.5   2.5  25.   25. ]
[ 25.   25.  250.  250. ]
[ 25.   25.  250.  250. ]]
---
[[250.  250.   25.   25. ]
[250.  250.   25.   25. ]
[ 25.   25.    2.5   2.5]
[ 25.   25.    2.5   2.5]]
---
[[250. 250. 250. 250.]
[250. 250. 250. 250.]
[250. 250. 250. 250.]
[250. 250. 250. 250.]]

这样做的好处是更容易被你观察到。

从这里你可以检查它是否延伸到你所期望的…

相关内容

  • 没有找到相关文章

最新更新