Return the gradient of an N-dimensional array over given axis in Python

The gradient function in NumPy computes the gradient of an N-dimensional array using numerical differentiation. It calculates derivatives along specified axes using central differences for interior points and forward/backward differences at boundaries.

Syntax

numpy.gradient(f, *varargs, axis=None, edge_order=1)

Parameters

The function accepts the following parameters:

  • f − N-dimensional array containing samples of a scalar function
  • varargs − Spacing between f values (default: unitary spacing for all dimensions)
  • axis − Axis or axes along which the gradient is calculated (default: None for all axes)
  • edge_order − Order of accuracy for boundary differences (1 or 2, default: 1)

Basic Example

Let's compute the gradient along a specific axis ?

import numpy as np

# Creating a 2D array
arr = np.array([[20, 35, 57], [70, 85, 120]], dtype=float)

print("Original Array:")
print(arr)

print("\nArray dimensions:", arr.ndim)
print("Array datatype:", arr.dtype)

# Calculate gradient along axis 0 (rows)
gradient_axis0 = np.gradient(arr, axis=0)
print("\nGradient along axis 0:")
print(gradient_axis0)
Original Array:
[[ 20.  35.  57.]
 [ 70.  85. 120.]]

Array dimensions: 2
Array datatype: float64

Gradient along axis 0:
[[50. 50. 63.]
 [50. 50. 63.]]

Gradient Along Different Axes

You can compute gradients along different axes to understand directional changes ?

import numpy as np

arr = np.array([[20, 35, 57], [70, 85, 120]], dtype=float)

# Gradient along axis 1 (columns)
gradient_axis1 = np.gradient(arr, axis=1)
print("Gradient along axis 1 (columns):")
print(gradient_axis1)

# Gradient along all axes
gradient_all = np.gradient(arr)
print("\nGradient along all axes:")
print("Axis 0:", gradient_all[0])
print("Axis 1:", gradient_all[1])
Gradient along axis 1 (columns):
[[15.  18.5 22. ]
 [15.  25.  35. ]]

Gradient along all axes:
Axis 0: [[50. 50. 63.]
 [50. 50. 63.]]
Axis 1: [[15.  18.5 22. ]
 [15.  25.  35. ]]

1D Array Gradient

For one-dimensional arrays, the gradient represents the rate of change between adjacent elements ?

import numpy as np

# 1D array example
data = np.array([1, 4, 9, 16, 25])
gradient_1d = np.gradient(data)

print("Original 1D array:", data)
print("Gradient:", gradient_1d)
print("Shape comparison - Original:", data.shape, "Gradient:", gradient_1d.shape)
Original 1D array: [ 1  4  9 16 25]
Gradient: [3.  4.  5.5 7.  9. ]
Shape comparison - Original: (5,) Gradient: (5,)

How It Works

The gradient calculation uses different methods for different positions:

  • Interior points − Second-order central differences: (f[i+1] - f[i-1]) / 2
  • Boundary points − Forward or backward differences based on edge_order parameter
  • Return value − Array(s) with the same shape as input

Conclusion

np.gradient() is essential for numerical differentiation in scientific computing. It provides accurate gradient calculations while preserving array dimensions, making it ideal for image processing, signal analysis, and mathematical modeling.

---
Updated on: 2026-03-26T19:19:11+05:30

222 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements