线性插值是在两个已知值之间估计一个函数的未知值的过程。
给定两个已知值(x1,y1)和(x2,y2),我们可以通过以下公式估计某个点x的y值。
y = y1 + (x-x1)(y2-y1)/(x2-x1)
我们可以使用以下基本语法在Python中进行线性插值:
import scipy.interpolate
y_interp = scipy.interpolate.interp1d(x, y)
#find y-value associated with x-value of 13
print(y_interp(13))
下面的例子展示了如何在实践中使用这种语法。
例子Python 中的线性插值
假设我们在Python中拥有以下两个数值列表:
x = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
y = [4, 7, 11, 16, 22, 29, 38, 49, 63, 80]
我们可以创建一个快速的绘图x vs. y:
import matplotlib.pyplot as plt
#create plot of x vs. y
plt.plot(x, y, '-ob')

现在假设我们想找到与一个新的x值13相关的y值。
我们可以用下面的代码来做。
import scipy.interpolate
y_interp = scipy.interpolate.interp1d(x, y)
#find y-value associated with x-value of 13
print(y_interp(13))
33.5
估计的y值变成了33.5。
如果我们把点(13,33.5)添加到我们的图中,它似乎与函数相当匹配:
import matplotlib.pyplot as plt
#create plot of x vs. y
plt.plot(x, y, '-ob')
#add estimated y-value to plot
plt.plot(13, 33.5, 'ro')

我们可以使用这个精确的公式对任何新的x值进行线性插值。
其他资源
下面的教程解释了如何修复Python中的其他常见错误:
如何修复Pandas中的KeyError
如何修复ValueError: 无法将浮点数NaN转换为整数
如何修复ValueError:操作数不能与形状一起广播