On this page
numpy.cov
- numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)[source]
- 
    Estimate a covariance matrix, given data and weights. Covariance indicates the level to which two variables vary together. If we examine N-dimensional samples, , then the covariance matrix element is the covariance of and . The element is the variance of . See the notes for an outline of the algorithm. - Parameters
- 
      - marray_like
- 
        A 1-D or 2-D array containing multiple variables and observations. Each row of mrepresents a variable, and each column a single observation of all those variables. Also seerowvarbelow.
- yarray_like, optional
- 
        An additional set of variables and observations. yhas the same form as that ofm.
- rowvarbool, optional
- 
        If rowvaris True (default), then each row represents a variable, with observations in the columns. Otherwise, the relationship is transposed: each column represents a variable, while the rows contain observations.
- biasbool, optional
- 
        Default normalization (False) is by (N - 1), whereNis the number of observations given (unbiased estimate). Ifbiasis True, then normalization is byN. These values can be overridden by using the keywordddofin numpy versions >= 1.5.
- ddofint, optional
- 
        If not Nonethe default value implied bybiasis overridden. Note thatddof=1will return the unbiased estimate, even if bothfweightsandaweightsare specified, andddof=0will return the simple average. See the notes for the details. The default value isNone.New in version 1.5. 
- fweightsarray_like, int, optional
- 
        1-D array of integer frequency weights; the number of times each observation vector should be repeated. New in version 1.10. 
- aweightsarray_like, optional
- 
        1-D array of observation vector weights. These relative weights are typically large for observations considered “important” and smaller for observations considered less “important”. If ddof=0the array of weights can be used to assign probabilities to observation vectors.New in version 1.10. 
 
- Returns
- 
      - outndarray
- 
        The covariance matrix of the variables. 
 
 See also - corrcoef
- 
       Normalized covariance matrix 
 NotesAssume that the observations are in the columns of the observation array mand letf = fweightsanda = aweightsfor brevity. The steps to compute the weighted covariance are as follows:>>> m = np.arange(10, dtype=np.float64) >>> f = np.arange(10) * 2 >>> a = np.arange(10) ** 2. >>> ddof = 1 >>> w = f * a >>> v1 = np.sum(w) >>> v2 = np.sum(w * a) >>> m -= np.sum(m * w, axis=None, keepdims=True) / v1 >>> cov = np.dot(m * w, m.T) * v1 / (v1**2 - ddof * v2)Note that when a == 1, the normalization factorv1 / (v1**2 - ddof * v2)goes over to1 / (np.sum(f) - ddof)as it should.ExamplesConsider two variables, and , which correlate perfectly, but in opposite directions: >>> x = np.array([[0, 2], [1, 1], [2, 0]]).T >>> x array([[0, 1, 2], [2, 1, 0]])Note how increases while decreases. The covariance matrix shows this clearly: >>> np.cov(x) array([[ 1., -1.], [-1., 1.]])Note that element , which shows the correlation between and , is negative. Further, note how xandyare combined:>>> x = [-2.1, -1, 4.3] >>> y = [3, 1.1, 0.12] >>> X = np.stack((x, y), axis=0) >>> np.cov(X) array([[11.71 , -4.286 ], # may vary [-4.286 , 2.144133]]) >>> np.cov(x, y) array([[11.71 , -4.286 ], # may vary [-4.286 , 2.144133]]) >>> np.cov(x) array(11.71)
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
 https://numpy.org/doc/1.19/reference/generated/numpy.cov.html