Numpy 协方差命令返回维度多于输入的矩阵



我有一个任意行向量"u"和一个任意矩阵"e",如下所示:

u = np.resize(np.array([8,3]),[1,2])
e = np.resize(np.array([[2,2,5,5],[1, 6, 7, 4]]),[4,2])
np.cov(u,e)
array([[ 12.5,   0. ,   0. , -12.5,   7.5],
[  0. ,   0. ,   0. ,   0. ,   0. ],
[  0. ,   0. ,   0. ,   0. ,   0. ],
[-12.5,   0. ,   0. ,  12.5,  -7.5],
[  7.5,   0. ,   0. ,  -7.5,   4.5]])

返回的矩阵是 5x5。这让我感到困惑,因为输入的最大维度只有 4。

因此,这可能不是一个笨拙的问题,而是一个数学问题......不确定。。。

请参考官方的numpy文档(https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.cov.html),并检查您对numpy.cov函数的使用是否与您想要实现的目标一致,并且您了解您要做什么。

查看签名时

numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)

男 : array_like

包含多个变量和观测值的一维或二维数组。 每行 m 表示一个变量,每列表示所有这些变量的单个观测值>>。另请参阅下面的 rowvar。

y : array_like,可选

一组额外的变量和观测值。 y 与 m 的形式相同。

请注意 m 和 y 是如何组合的,如页面上的最后一个示例所示

>>> x = [-2.1, -1,  4.3]
>>> y = [3,  1.1,  0.12]
>>> X = np.stack((x, y), axis=0)
>>> print(np.cov(X))
[[ 11.71        -4.286     ]
[ -4.286        2.14413333]]
>>> print(np.cov(x, y))
[[ 11.71        -4.286     ]
[ -4.286        2.14413333]]
>>> print(np.cov(x))
11.71

相关内容

  • 没有找到相关文章

最新更新