Python

Python,第1张

1、语法解释

线性插值主要用到的是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)

2、例子
#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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/731953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存