线性插值主要用到的是numpy中的interp函数
interp(x, xp, fp, left=None, right=None, period=None)
其中x为要插值点的横坐标,xp为x的坐标值(必须是递增),fp为y的坐标值
left是可选择参数,如果x小于xp,则会默认返回xp[0]对应的fp值,right同理。
period可设定横坐标的周期,该选项打开时,则忽略left和right。
具体可见help(np.interp)
#help中一个例子 x = np.linspace(0, 2*np.pi, 10) y = np.sin(x) #插入点为xvals xvals = np.linspace(0, 2*np.pi, 50) yinterp = np.interp(xvals, x, y) plt.plot(x, y, 'o') plt.plot(xvals, yinterp, '-x') plt.show()3、扩展 一)已知y坐标,求x点
将interp(x, xp, fp, left=None, right=None, period=None)中的x改成y,xp与fp互换即可
y = np.array([0, 38.39, 71.41, 99.66, 123.67, 143.88, 160.61, 174.03, 184.16, 190.8, 193.52]) x = np.array([0, 0.37, 0.74, 1.11, 1.48, 1.85, 2.22, 2.59, 2.96, 3.33, 3.7]) plt.plot(x, y, '-') y_val = 30 root = np.interp(y_val,y,x) plt.plot(root,y_val, marker="o") plt.plot([root,root,0],[0,y_val,y_val], "--") plt.xlim(0,None) plt.ylim(0,None) plt.show()二)x坐标是递减
interp(x, xp, fp, left=None, right=None, period=None)xp的规定必须是递增数列,若数据中xp正好是递减,可以通过切片将xp倒序过来,即采用xp[::-1]
参考:python已知y求x



