SciPy scipy.interpolate.interp1d Function

Suraj Joshi Jan 30, 2023
  1. Syntax of scipy.interpolate.interp1d() to Interpolate Data Points:
  2. Example Code : 1d Linear Interpolation Between Data Points Using scipy.interpolate.interp1d()
  3. Example Code : Set kind Parameter in scipy.interpolate.interp1d() Method
SciPy scipy.interpolate.interp1d Function

Python Scipy scipy.interpolate.interp1d() class is used to interpolate an one-dimensional function. A one-dimensional function takes a single input value as the parameter and returns a single analyzed output value.

Normally, we have a series of data points in discrete locations. Now, we are trying to approximate the function that can find y values for any given x values between these given points.

Syntax of scipy.interpolate.interp1d() to Interpolate Data Points:

scipy.interpolate.interp1d(x, y, kind)

Parameters

x Array-like. It is the input set of values provided to the function.
y Array-like. It is the input value defined based on x.
kind It is an optional parameter. It specifies the kind of interpolation. By default, it is set to linear.

Return

It returns a function.

Example Code : 1d Linear Interpolation Between Data Points Using scipy.interpolate.interp1d()

import numpy as np
import matplotlib.pyplot as plt
import scipy
from scipy import interpolate

x_value = np.array([0, 1, 2, 4])
y_value = np.array([2, 3, 12, 147])

function = scipy.interpolate.interp1d(x_value, y_value)
x_new = np.linspace(0, 4, 10)

plt.scatter(x_value, y_value, color="blue")
plt.plot(x_new, function(x_new), color="black")
plt.xlabel("X-Values")
plt.ylabel("Y-Values")
plt.title("1d Interpolation using scipy interp1d method")
plt.show()

Output:

1d Interpolation using scipy interp1d method

Here, we try to interpolate or create a function approximating the relationship between x_value and y_value. In above code x_value and y_value are taken randomly. Then the values are passed as an argument into the interp1d function, which determines the interpolation function. Now we can find any y_value for any given x_value in the range of x_new.

Finally, to visualize how the interpolation function looks, we take 10 points between 0 and 4 and plot the line curve of the function represented by the black curve in the figure.

Since we have not set what kind of curve we want to interpolate, by default, the interp1d method shows us a linear straight line between points.

Example Code : Set kind Parameter in scipy.interpolate.interp1d() Method

import numpy as np
import matplotlib.pyplot as plt
import scipy
from scipy import interpolate

x_value = np.array([0, 1, 2, 4])
y_value = np.array([2, 3, 12, 147])

f_linear = scipy.interpolate.interp1d(x_value, y_value)
f_quad = scipy.interpolate.interp1d(x_value, y_value, kind="quadratic")
x_new = np.linspace(0, 4, 4)

plt.scatter(x_value, y_value, color="blue")
plt.plot(x_new, f_linear(x_new), color="black")
plt.plot(x_new, f_quad(x_new), color="green")
plt.xlabel("X-Values")
plt.ylabel("Y-Values")
plt.title("1d Interpolation using scipy interp1d method")
plt.legend(["linear", "quadratic", "data"], loc="best")
plt.show()

Output:

Set kind parameter in 1d Interpolation using scipy interp1d method

The above plot shows interpolation functions approximated using linear and quadratic techniques. The black line in the plot represents interpolated line using the linear method, and the green line in the plot represents interpolated line using the quadratic method.

Thus to summarize, the interp1d class is used to calculate a function using the provided data points and can be calculated anytime, anywhere specified within the given domain using linear interpolation.

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn