SciPy

numpy.gradient

numpy.gradient(f, *varargs, **kwargs)[source]

Return the gradient of an N-dimensional array.

The gradient is computed using second order accurate central differences in the interior and either first differences or second order accurate one-sides (forward or backwards) differences at the boundaries. The returned gradient hence has the same shape as the input array.

Parameters:

f : array_like

An N-dimensional array containing samples of a scalar function.

varargs : list of scalar, optional

N scalars specifying the sample distances for each dimension, i.e. dx, dy, dz, ... Default distance: 1.

edge_order : {1, 2}, optional

Gradient is calculated using Nth order accurate differences at the boundaries. Default: 1.

New in version 1.9.1.

Returns:

gradient : list of ndarray

Each element of list has the same shape as f giving the derivative of f with respect to each dimension.

Examples

>>> x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
>>> np.gradient(x)
array([ 1. ,  1.5,  2.5,  3.5,  4.5,  5. ])
>>> np.gradient(x, 2)
array([ 0.5 ,  0.75,  1.25,  1.75,  2.25,  2.5 ])

For two dimensional arrays, the return will be two arrays ordered by axis. In this example the first array stands for the gradient in rows and the second one in columns direction:

>>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float))
[array([[ 2.,  2., -1.],
        [ 2.,  2., -1.]]), array([[ 1. ,  2.5,  4. ],
        [ 1. ,  1. ,  1. ]])]
>>> x = np.array([0, 1, 2, 3, 4])
>>> dx = np.gradient(x)
>>> y = x**2
>>> np.gradient(y, dx, edge_order=2)
array([-0.,  2.,  4.,  6.,  8.])

Previous topic

numpy.ediff1d

Next topic

numpy.cross