我有一个任意行向量“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。
因此,这可能不是一个愚蠢的问题而是更多的数学问题......不确定......
答案 0 :(得分:1)
请参阅官方numpy文档(https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.cov.html)并检查numpy.cov函数的使用是否与您尝试实现的内容一致,并了解您要执行的操作。
查看签名时
numpy.cov(m,y =无,rowvar = True,偏见= False,ddof =无,fweights =无,aweights =无)
m:array_like
包含多个变量和观测值的1-D或2-D数组。 m的每一行代表一个变量,并且每一列的单个观察> >所有这些变量。另见下面的rowvar。
y:array_like,optional
另外一组变量和观察。 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