This code snippet shows a simple way to do linear or nearest-neighbor interpolation using only NumPy.  This is handy if you don't have SciPy installed or don't want to introduce a dependency on SciPy in distributed code.  By using the numpy.searchsorted() method and vectorized operations it is reasonably fast, though I have not made much effort to truly optimize the algorithm.

```def interpolate(yin, xin, xout, method='linear'):
"""
Interpolate the curve defined by (xin, yin) at points xout. The array
xin must be monotonically increasing. The output has the same data type as
the input yin.

:param yin: y values of input curve
:param xin: x values of input curve
:param xout: x values of output interpolated curve
:param method: interpolation method ('linear' | 'nearest')

@:rtype: numpy array with interpolated curve
"""
lenxin = len(xin)

i1 = numpy.searchsorted(xin, xout)
i1[ i1==0 ] = 1
i1[ i1==lenxin ] = lenxin-1

x0 = xin[i1-1]
x1 = xin[i1]
y0 = yin[i1-1]
y1 = yin[i1]

if method == 'linear':
return (xout - x0) / (x1 - x0) * (y1 - y0) + y0
elif method == 'nearest':
return numpy.where(numpy.abs(xout - x0) < numpy.abs(xout - x1), y0, y1)
else:
raise ValueError('Invalid interpolation method: %s' % method)# Python code here```