This is the definition of a covariance matrix. http://en.wikipedia.org/wiki/Covariance_matrix#Definition
Each element in the matrix, except in the principal diagonal, (if I am not wrong) simplifies to E(x_{i} * x_{j}) - mean(i)*mean(j) where i and j are the row number and column number of the covariance matrix.
From the numpy documentation,
x = np.array([[0, 2], [1, 1], [2, 0]]).T
x
array([[0, 1, 2], [2, 1, 0]])
np.cov(x)
array([[ 1., -1.],[-1., 1.]])
The first row i.e [0, 1, 2] corresponds to X_{0}
and the second row i.e [2, 1, 0] corresponds to X_{1}
How is expectation of X_{0}*X_{1} calculated, since the distributions of the random variables are not knowno?
Thanks.
Simply check the code.
cov
in \site-packages\numpy\lib\function_base.py
def cov(m, y=None, rowvar=1, bias=0, ddof=None):"""Estimate a covariance matrix, given data.Covariance indicates the level to which two variables vary together.If we examine N-dimensional samples, :math:`X = [x_1, x_2, ... x_N]^T`,then the covariance matrix element :math:`C_{ij}` is the covariance of:math:`x_i` and :math:`x_j`. The element :math:`C_{ii}` is the varianceof :math:`x_i`.Parameters----------m : array_likeA 1-D or 2-D array containing multiple variables and observations.Each row of `m` represents a variable, and each column a singleobservation of all those variables. Also see `rowvar` below.
...
if y is not None:y = array(y, copy=False, ndmin=2, dtype=float)X = concatenate((X,y), axis)X -= X.mean(axis=1-axis)[tup]if rowvar:N = X.shape[1]else:N = X.shape[0]if ddof is None:if bias == 0:ddof = 1else:ddof = 0fact = float(N - ddof)if not rowvar:return (dot(X.T, X.conj()) / fact).squeeze()else:return (dot(X, X.T.conj()) / fact).squeeze()