Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def diff(a, n=1, axis=-1):
- """
- Calculate the n-th order discrete difference along given axis.
- The first order difference is given by ``out[n] = a[n+1] - a[n]`` along
- the given axis, higher order differences are calculated by using `diff`
- recursively.
- Parameters
- ----------
- a : array_like
- Input array
- n : int, optional
- The number of times values are differenced.
- axis : int, optional
- The axis along which the difference is taken, default is the last axis.
- Returns
- -------
- out : ndarray
- The `n` order differences. The shape of the output is the same as `a`
- except along `axis` where the dimension is smaller by `n`.
- See Also
- --------
- gradient, ediff1d
- Examples
- --------
- >>> x = np.array([1, 2, 4, 7, 0])
- >>> np.diff(x)
- array([ 1, 2, 3, -7])
- >>> np.diff(x, n=2)
- array([ 1, 1, -10])
- >>> x = np.array([[1, 3, 6, 10], [0, 5, 6, 8]])
- >>> np.diff(x)
- array([[2, 3, 4],
- [5, 1, 2]])
- >>> np.diff(x, axis=0)
- array([[-1, 2, 0, -2]])
- """
- if n == 0:
- return a
- if n < 0:
- raise ValueError(
- "order must be non-negative but got " + repr(n))
- a = asanyarray(a)
- nd = len(a.shape)
- slice1 = [slice(None)]*nd
- slice2 = [slice(None)]*nd
- slice1[axis] = slice(1, None)
- slice2[axis] = slice(None, -1)
- slice1 = tuple(slice1)
- slice2 = tuple(slice2)
- if n > 1:
- return diff(a[slice1]-a[slice2], n-1, axis=axis)
- else:
- return a[slice1]-a[slice2]
Advertisement
Add Comment
Please, Sign In to add comment