2019年8月15日 python玄学建模(5):插值(二维)
官方文档链接:https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.html#scipy.interpolate.interp2d 这篇博客接着上次的scipy一维插值,讲讲二维插值api的用法 scipy库中可以通过interp2d类来实现一维插值 类原型:class? 参数如下: x和y:插值点的x和y坐标。具体有两种写法,如果x和y可以通过笛卡尔积构成网格(例如x=[1,2,3],y=[0,3]),则x和y就会被视为网格,插值点个数为len(x)*len(y); 如果不能,那么x和y必须一一对应以指出每个插值点的x和y坐标,x和y的长度必须一致,比如x=[2,3,1],y=[0,4]就表示(2,0),(3,(1,4)三个插值点,插值点个数为len(x)或len(y); 如果x和y是多维的,则会被自动展平; z:插值点的z坐标,一维数组(如果是多维则会被自动展平),长度必须与x和y决定的插值点个数一致; kind:插值方式,有三种可选,分别是‘linear‘(线性插值)、‘cubic‘(三次样条插值)、‘quintic‘(五次样条插值); copy、bounds_error、fill_value三个参数用法和一维插值基本一样,不过fill_value只有固定填充值和外插两种方式。 二维插值api的用法一样很简单,下面就是官方文档中给出的例子: >>> from scipy import interpolate >>> x = np.arange(-5.01,5.01,0.25) >>> y = np.arange(-5.01,0.25) >>> xx,yy = np.meshgrid(x,y) #生成网格点,不了解用法的话可以直接查,资料很多 >>> z = np.sin(xx**2+yy**2) >>> f = interpolate.interp2d(x,y,z,kind=‘cubic‘) >>> import matplotlib.pyplot as plt >>> xnew = np.arange(-5.01,1e-2) >>> ynew = np.arange(-5.01,1e-2) >>> znew = f(xnew,ynew) >>> plt.plot(x,z[0,:],‘ro-‘,xnew,znew[0,‘b-‘) >>> plt.show() 以上就是interp2d的简单用法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |