我有一个任意行向量"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