原文地址:http://old.sebug.net/paper/books/scipydoc/scipy_intro.html,转载请注明出处!
interpolate库提供了许多对数据进行插值运算的函数。下面是使用直线和B-Spline对正弦波上的点进行插值的例子。
#coding = utf-8 import numpy as np import pylab as pl from scipy import interpolate x = np.linspace(0, 2*np.pi+np.pi/4, 10) y = np.sin(x) x_new = np.linspace(0, 2*np.pi+np.pi/4, 100) f_linear = interpolate.interp1d(x, y) tck = interpolate.splrep(x, y) y_bspline = interpolate.splev(x_new, tck) pl.plot(x, y, "o", label=u"原始数据") pl.plot(x_new, f_linear(x_new), label=u"线性插值") pl.plot(x_new, y_bspline, label=u"B-spline插值") pl.legend() pl.show()
在这段程序中,通过interp1d函数直接得到一个新的线性插值函数。而B-Spline插值运算需要先使用splrep函数计算出B-Spline曲线的参数,然后将参数传递给splev函数计算出各个取样点的插值结果。