NumPy diff()

The diff() function calculates the difference of consecutive elements along a specified axis of an array.

Example

import numpy as np

array1 = np.array([1, 3, 6, 10, 15])

# use diff() to calculate difference of consecutive elements of array1 result = np.diff(array1)
print(result) # Output: [2 3 4 5]

diff() Syntax

The syntax of diff() is:

numpy.diff(array, n=1, axis=-1)

diff() Arguments

The diff() function takes following arguments:

  • array - the input array
  • n (optional) - the number of times the differences are taken consecutively
  • axis (optional) - the axis along which the differences are calculated

diff() Return Value

The diff() function returns an array that contains the differences of consecutive elements along the specified axis.


Example 1: diff() With 2-D Array

The axis argument defines how we can find the difference of consecutive elements in a 2-D array.

  • If axis = 0, the difference of consecutive elements is calculated column-wise.
  • If axis = 1, the difference of consecutive elements is calculated row-wise.
import numpy as np

array1 = np.array([[1, 3, 6],
                                [2, 4, 8]])

# compute the differences between consecutive elements column-wise (along axis 0) result1 = np.diff(array1, axis=0)
print("Differences along axis 0 (column-wise):") print(result1)
# compute the differences between consecutive elements row-wise (along axis 1) result2 = np.diff(array1, axis=1)
print("\nDifferences along axis 1 (row-wise):") print(result2)

Output

Differences along axis 0 (column-wise):
[[1 1 2]]

Differences along axis 1 (row-wise):
[[2 3]
 [2 4]]

Here,

  • The resulting array result1 contains the differences of consecutive elements for each column of array1.
  • The resulting array result2 contains the differences of consecutive elements for each row of array1.

Example 2: Use of n Argument in diff()

The n argument in diff() allows us to specify the number of times the differences are taken consecutively.

By default, n is set to 1, which calculates the differences between consecutive elements once.

import numpy as np

# create a 1D NumPy array
array1 = np.array([1, 4, 9, 16, 25])

# compute the first-order differences by setting n=1 result1 = np.diff(array1, n=1)
print("First-order differences:") print(result1)
# compute the second-order differences by setting n=2 result2 = np.diff(array1, n=2)
print("\nSecond-order differences:") print(result2)

Output

First-order differences:
[3 5 7 9]

Second-order differences:
[2 2 2]

In this example,

  • The resulting array result1 contains the differences between consecutive elements of array1. It is calculated as [4-1, 9-4, 16-9, 25-16], resulting in [3, 5, 7, 9].
  • The resulting array result2 contains the differences between consecutive elements of result1. It is calculated as [5-3, 7-5, 9-7], resulting in [2, 2, 2].