#### Previous topic

numpy.ediff1d

#### Next topic

numpy.cross

# numpy.gradient

`numpy.``gradient`(f, *varargs, **kwargs)

  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.])