Python NumPy Interpolate Function

  • Post author:
  • Post category:NumPy / Python
  • Post last modified:January 10, 2024
  • Reading time:11 mins read

NumPy interp() function in Python also known as interpolation returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xpfp). It is a one-dimensional linear interpolation for monotonically increasing sample points.

In this article, I will explain how to use numpy.interp() function syntax, parameters, and usage of how to get the interpolated values of the NumPy array with examples.

1. Quick Examples of Interpolate Function

If you are in a hurry, below are some quick examples of the NumPy interpolate function.


# Quick examples of interpolate function

# Example 1: Use numpy.interp() function 
# Perform linear interpolation
x = [2, 5, 6]
xp = [1, 3, 4, 7] 
fp = [2, 0, 4, 1]
interpolated_values = np.interp(x, xp, fp)

# Example 2: Get the interpolate values 
# On graphical representation
arr = np.linspace(0, 2*np.pi, 12)
arr1 = np.sin(arr)
xvals = np.linspace(0, 2*np.pi, 60)
yinterp = np.interp(xvals, arr, arr1)
plt.plot(arr, arr1, 'o')
plt.plot(xvals, yinterp, '-x')
plt.show()

# Example 3: Get interpolation with periodic x-coordinates
x = [-120, -150, -135, 195, -30, -9, 5, 345]
xp = [180, -170, 250, -460]
fp = [8, 14, 5, 9]
arr2 = np.interp(x, xp, fp, period=360)

# Example 4: Use interp() function 
# To numpy complex interpolation
x = [2.7, 6.0]
xp = [3, 5, 7]
fp = [2.0j, 0, 3+6j]
arr2 = np.interp(x, xp, fp)

2. Syntax of NumPy interp()

Following is the syntax of numpy.interp() function.


# Syntax of numpy.interp()
numpy.interp(x, xp, fp, left=None, right=None, period=None)

2.1 Parameters of interp()

The numpy.interp() function allows the following parameters

  • x – array_like : The x-coordinates at which to evaluate the interpolated values.
  • xp – The x-coordinates of the data points, must be increasing if the argument period is not specified. Otherwise, xp is internally sorted after normalizing the periodic boundaries with xp = xp % period.
  • fp – The y-coordinates of the data points, the same length as xp.
  • left – Optional float or complex corresponding to fp. left is the value to return for x < xp[0], by default optional values and fp[0].
  • right – Optional float or complex corresponding to fp. right is the value to return for x > xp[-1], by default optional values and fp[-1]
  • period – None or float, optional: period is the period for the x-coordinates. If it is given, left and right are ignored if period is specified. This is also optional.

2.2 Return Value

It returns the interpolated values of type float, the same shape as x. Raises ValueError if xp and fp have different lengths. If xp or fp are not 1-D sequences If period == 0.

3. Use numpy.interp() Function

To use the numpy.interp() function for linear interpolation. In this example, you will use arrays for both x (multiple x-coordinates) and xp (known x-coordinates) to perform the interpolation.

In the below example, interpolated_values will contain the interpolated y-values corresponding to x = [2, 5, 6] using the given data points. The numpy.interp() function will calculate the interpolated values based on the linear interpolation formula.


# Import numpy
import numpy as np 
   
x = [2, 5, 6]
xp = [1, 3, 4, 7] 
fp = [2, 0, 4, 1]

# Use numpy.interp() function 
# Perform linear interpolation
interpolated_values = np.interp(x, xp, fp)
print("After getting the interpolated values:\n",interpolated_values)

Yields below output.

numpy interpolate function

4. Get the Interpolate Values on Graphical Representation

You can also use the NumPy interp() function for graphical representation using the MatLab library. Plot an interpolant to the sine function.


import numpy as np
import matplotlib.pyplot as plt

# Get the interpolate values on graphical representation
arr = np.linspace(0, 2*np.pi, 12)
arr1 = np.sin(arr)
xvals = np.linspace(0, 2*np.pi, 60)
yinterp = np.interp(xvals, arr, arr1)

plt.plot(arr, arr1, 'o')
plt.plot(xvals, yinterp, '-x')
plt.show()

Yields below output.

numpy interpolate

You can see the Parabolic graph of the interp() method in Numpy.

5. Get Interpolation with Periodic x-coordinates

To interpolate with periodic x-coordinates using the numpy.interp() function. The period=360 parameter indicates that the x-coordinates are periodic with a period of 360 degrees. The function will calculate the interpolated values for the given x array using the periodic data points provided in xp and fp. When you run this code, it will calculate and print the interpolated values based on the periodic data points provided.


import numpy as np

x = [-120, -150, -135, 195, -30, -9, 5, 345]
xp = [180, -170, 250, -460]
fp = [8, 14, 5, 9]

# Get interpolation with periodic x-coordinates
arr2 = np.interp(x, xp, fp, period=360)
print("After getting the interpolated values:\n",arr2)

# Output:
# After getting the interpolated values:
#  [ 6.5        11.          8.75       13.25        8.75        8.675
#   8.625       8.69642857]

6. Use interp() Function to NumPy Complex Interpolation

You can use the numpy.interp() function to perform complex interpolation by working with complex numbers in Python. The numpy.interp() function handles complex numbers just like real numbers.

In the below example, np.argsort() is used to obtain the sorted indices of the xp array, which are then used to sort both xp and fp arrays. This ensures that xp is in ascending order, allowing the np.interp() function to perform complex interpolation correctly.


import numpy as np

x = [2.7, 6.0]
xp = [3, 5, 7]
fp = [2.0j, 0, 3 + 6j]

# Sort xp and fp arrays to ensure xp is in ascending order
sorted_indices = np.argsort(xp)
xp_sorted = np.array(xp)[sorted_indices]
fp_sorted = np.array(fp)[sorted_indices]

# Use interp() function for numpy complex interpolation
arr2 = np.interp(x, xp_sorted, fp_sorted)
print("After getting the complex interpolation values:\n", arr2)

# Output:
# After getting the complex interpolation values:
3  [0. +2.j 1.5+3.j]

Frequently Asked Questions

What is NumPy interpolate function used for?

NumPy interpolation functions are used to perform various types of interpolation on data points. Interpolation is the process of estimating unknown values that fall between known values in a sequence of numbers or data points.

What are the common interpolation methods provided by NumPy?

NumPy provides several interpolation methods, including linear interpolation, polynomial interpolation, spline interpolation, and more. The numpy.interp() function performs one-dimensional linear interpolation.

What is the role of the period parameter in numpy.interp()?

The period parameter in the numpy.interp() function allows you to specify a period for the x-coordinates. It is useful when dealing with periodic functions. If specified, data points are considered to be periodic with the specified period.

How does the numpy.interp() function work?

The numpy.interp() function performs one-dimensional linear interpolation. Given known data points (xp for x-coordinates and fp for y-coordinates), and a set of target x-coordinates (x), the function estimates corresponding y-values using linear interpolation.

How can I perform complex interpolation using NumPy?

You can perform complex interpolation in NumPy by representing both x-coordinates and y-coordinates as complex numbers. The numpy.interp() function handles complex numbers just like real numbers, allowing you to perform complex interpolation easily.

Conclusion

In this article, I have explained how to use numpy.interp() function to get the interpolated values, the same shape as x with examples.

Happy Learning!!

References

Malli

Malli is an experienced technical writer with a passion for translating complex Python concepts into clear, concise, and user-friendly articles. Over the years, he has written hundreds of articles in Pandas, NumPy, Python, and takes pride in ability to bridge the gap between technical experts and end-users.

Leave a Reply