SciPy provides various types of spline interpolation through the scipy.interpolate module. Here's an example using cubic spline interpolation:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import CubicSpline
# Known data points
x = np.array([0, 1, 2, 3, 4])
y = np.array([0, 2, 1, 3, 5])
# Create a cubic spline interpolation
cs = CubicSpline(x, y)
# Define the range of x values for interpolation
x_new = np.linspace(0, 4, 100)
y_new = cs(x_new)
# Plot the original data and the interpolated curve
plt.scatter(x, y, label='Data Points')
plt.plot(x_new, y_new, label='Cubic Spline Interpolation')
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.show()
In this example, CubicSpline creates a cubic spline interpolation, and you can evaluate the spline at any point within the range of the original data.