Interpolation in Python

Posted by Simon Walker on Sat 23 August 2014

For interpolation in python, scipy includes the interpolateackage containing (amongst other things) interp1d for simple interpolation.

The function does not however perform extrapolation; if the interpolator is asked for a value outside the original range it will raise an exception. To get around this, the interpolator contains a .x parameter which contains the original x values used to construct itself. A boolean index can then be used to reject inputoints which fall outside of this range:

# Create an interpolator object from the training dataset
interp = scipy.interpolate.interp1d(data_x, data_y)

# Boolean index array for data points falling within the 
# training dataset range
ind = (new_x > interp.x.min()) & (new_x < interp.x.max())

# Finally create the new interpolated data, remembering
# to apply the index to the x data also
interpolated_x, interpolated_y = new_x[ind], interp(new_x[ind])

tags: python, scipy