Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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.
