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: