官方文档链接:https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.HTML#scipy.interpolate.interp2d
这篇博客接着上次的scipy一维插值,讲讲二维插值API的用法
scipy库中可以通过interp2d类来实现一维插值
类原型:class scipy.interpolate.
interp2d
(x, y, z, kind=‘linear‘, copy=True, bounds_error=False, fill_value=None)
参数如下:
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的简单用法。
总结以上是内存溢出为你收集整理的2019年8月15日 python玄学建模(5):插值(二维)全部内容,希望文章能够帮你解决2019年8月15日 python玄学建模(5):插值(二维)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)