Trying to understand scipy and numpy interpolation
You can generate the function points and reassign them to a variable similarly to when you generated them and plotted them:
y_lin = f(xnew)
y_cub = f2(xnew)
interp1d
returns you a function that you can then use to generate the data which in turns can be reassigned to other variables and used any way you want. Both outputs plotted together:
plt.plot(x, y, 'o', xnew, f(xnew), xnew, y_lin, '-', xnew, f2(xnew), xnew, y_cub, '--')
plt.legend(['data', 'linear' ,'reassigned linear', 'cubic', 'reassigned cubic'], loc='best')
plt.show()
Jim421616
I'm a PhD student, studying the photometric estimation of quasar redshift from radio properties.
Updated on June 04, 2022Comments
-
Jim421616 almost 2 years
If I have some measured data whose function I don't know (let's say it's either not important, or computationally difficult), such as
x2 = [0, 1, 10, 25, 30] y2 = [5, 12, 50, 73, 23]
and I use
numpy.interp
to find the intermediate values, it gives me a linear interpolant between the points and I get a straight line:xinterp = np.arange(31) yinterp1 = np.interp(xinterp, x2, y2) plt.scatter(xinterp, yinterp1) plt.plot(x2, y2, color = 'red', marker = '.')
The example from the
scipy.interpolate
docs givesx = np.linspace(0, 10, num=11, endpoint=True) y = np.cos(-x**2/9.0) f = interp1d(x, y) f2 = interp1d(x, y, kind='cubic') xnew = np.linspace(0, 10, num=41, endpoint=True) plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--') plt.legend(['data', 'linear', 'cubic'], loc='best') plt.show()
with different
kind
s of interpolation for a smoother curve. But what if I want the points in a smooth curve, rather than just the curve? Is there a function in NumPy or SciPy that can give the discrete points along the smoothed curve?