Numpy协方差命令返回矩阵,其尺寸大于输入

时间:2018-05-17 17:16:45

标签: python numpy covariance

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

因此,这可能不是一个愚蠢的问题而是更多的数学问题......不确定......

1 个答案:

答案 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