#### Previous topic

numpy.nancumsum

#### Next topic

numpy.ediff1d

# numpy.diff

`numpy.``diff`(a, n=1, axis=-1)

  Calculate the n-th discrete difference along given axis.

  The first difference is given by `out[n] = a[n+1] - a[n]` along the given axis, higher 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: | diff : ndarray The n-th differences. The shape of the output is the same as a except along axis where the dimension is smaller by n. The type of the output is the same as that of the input.

  See also

  `gradient`, `ediff1d`, `cumsum`

  Notes

  For boolean arrays, the preservation of type means that the result will contain False when consecutive elements are the same and True when they differ.

  For unsigned integer arrays, the results will also be unsigned. This should not be surprising, as the result is consistent with calculating the difference directly:

      >>> u8_arr = np.array([1, 0], dtype=np.uint8)
      >>> np.diff(u8_arr)
      array([255], dtype=uint8)
      >>> u8_arr[1,...] - u8_arr[0,...]
      array(255, np.uint8)

  If this is not desirable, then the array should be cast to a larger integer type first:

      >>> i16_arr = u8_arr.astype(np.int16)
      >>> np.diff(i16_arr)
      array([-1], dtype=int16)

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