diff options
author | rgommers <ralf.gommers@googlemail.com> | 2010-11-11 21:29:56 +0800 |
---|---|---|
committer | rgommers <ralf.gommers@googlemail.com> | 2010-11-11 21:29:56 +0800 |
commit | 4a7de57448091ef02e50edf9d1e302c20a26ff0c (patch) | |
tree | 357de983a7ba4ff56e7800781f4619d70111a89f /doc/EXAMPLE_DOCSTRING.rst.txt | |
parent | a07ac0f4703cbac0e8747ac0e9e08f41cba9b896 (diff) | |
download | numpy-4a7de57448091ef02e50edf9d1e302c20a26ff0c.tar.gz |
DOC: rename ReST files under doc/ from *.txt to *.rst.txt, so they render on github.
Diffstat (limited to 'doc/EXAMPLE_DOCSTRING.rst.txt')
-rw-r--r-- | doc/EXAMPLE_DOCSTRING.rst.txt | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/doc/EXAMPLE_DOCSTRING.rst.txt b/doc/EXAMPLE_DOCSTRING.rst.txt new file mode 100644 index 000000000..ee1326474 --- /dev/null +++ b/doc/EXAMPLE_DOCSTRING.rst.txt @@ -0,0 +1,104 @@ +.. Here follows an example docstring for a C-function. Note that the + signature is given. This is done only for functions written is C, + since Python cannot find their signature by inspection. For all + other functions, start with the one line description. + + +multivariate_normal(mean, cov[, shape]) + +Draw samples from a multivariate normal distribution. + +The multivariate normal, multinormal or Gaussian distribution is a +generalisation of the one-dimensional normal distribution to higher +dimensions. + +Such a distribution is specified by its mean and covariance matrix, +which are analogous to the mean (average or "centre") and variance +(standard deviation squared or "width") of the one-dimensional normal +distribution. + +Parameters +---------- +mean : (N,) ndarray + Mean of the N-dimensional distribution. +cov : (N,N) ndarray + Covariance matrix of the distribution. +shape : tuple of ints, optional + Given a shape of, for example, (m,n,k), m*n*k samples are + generated, and packed in an m-by-n-by-k arrangement. Because each + sample is N-dimensional, the output shape is (m,n,k,N). If no + shape is specified, a single sample is returned. + +Returns +------- +out : ndarray + The drawn samples, arranged according to `shape`. If the + shape given is (m,n,...), then the shape of `out` is is + (m,n,...,N). + + In other words, each entry ``out[i,j,...,:]`` is an N-dimensional + value drawn from the distribution. + +See Also +-------- +normal +scipy.stats.distributions.norm : Provides random variates, as well as + probability density function, cumulative + density function, etc. + +Notes +----- +The mean is a coordinate in N-dimensional space, which represents the +location where samples are most likely to be generated. This is +analogous to the peak of the bell curve for the one-dimensional or +univariate normal distribution. + +Covariance indicates the level to which two variables vary together. +From the multivariate normal distribution, we draw N-dimensional +samples, :math:`X = [x_1, x_2, ... x_N]`. 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 variance of :math:`x_i` (i.e. its +"spread"). + +Instead of specifying the full covariance matrix, popular +approximations include: + + - Spherical covariance (`cov` is a multiple of the identity matrix) + - Diagonal covariance (`cov` has non-negative elements, and only on + the diagonal) + +This geometrical property can be seen in two dimensions by plotting +generated data-points: + +>>> mean = [0,0] +>>> cov = [[1,0],[0,100]] # diagonal covariance, points lie on x or y-axis +>>> x,y = np.random.multivariate_normal(mean,cov,5000).T + +>>> import matplotlib.pyplot as plt +>>> plt.plot(x,y,'x'); plt.axis('equal'); pyplot.show() + +Note that the covariance matrix must be non-negative definite. + +References +---------- +.. [1] A. Papoulis, "Probability, Random Variables, and Stochastic + Processes," 3rd ed., McGraw-Hill Companies, 1991 +.. [2] R.O. Duda, P.E. Hart, and D.G. Stork, "Pattern Classification," + 2nd ed., Wiley, 2001. + +Examples +-------- +>>> mean = (1,2) +>>> cov = [[1,0],[1,0]] +>>> x = np.random.multivariate_normal(mean,cov,(3,3)) +>>> x.shape +(3, 3, 2) + +The following is probably true, given that 0.6 is roughly twice the +standard deviation: + +>>> print list( (x[0,0,:] - mean) < 0.6 ) +[True, True] + +.. index: + :refguide: random:distributions |