使用python从两个表中查找对应值的线性插值
我想写一个函数,它接受两个列表,一个是x值,另一个是y(x)值,并在给定x值时返回相应的y(x)值。我还想使用线性插值来找到列表中数字之间x值的y(x)。 比如说使用python从两个表中查找对应值的线性插值,python,linear-interpolation,Python,Linear Interpolation,我想写一个函数,它接受两个列表,一个是x值,另一个是y(x)值,并在给定x值时返回相应的y(x)值。我还想使用线性插值来找到列表中数字之间x值的y(x)。 比如说 f = function([3, 4, 6], [0, 1, 2]) 打印f(3) 应该返回0.0 到目前为止,我还没有一个完整的代码,但我正在尝试使用 interp1d(numpy.array(xs)、numpy.array(ys),“线性”)用于插值 范围内i的(len(xs)): 返回ys[i]并将其用于列表中的值,但我真的不
f = function([3, 4, 6], [0, 1, 2])
打印f(3)
应该返回0.0
到目前为止,我还没有一个完整的代码,但我正在尝试使用
interp1d(numpy.array(xs)、numpy.array(ys),“线性”)
用于插值
范围内i的(len(xs)):
返回ys[i]
并将其用于列表中的值,但我真的不知道如何将其组合在一起您可以zip
将列表转换为字典,然后将字典传递给lambda
:
>>> f=lambda x: dict(zip([3, 4, 6], [0, 1, 2]))[x]
>>> f(3)
0
>>> f(4)
1
但由于上述解决方案可能会引发键错误
,因此您可以使用以下出厂功能:
>>> def liner(l1,l2):
... d=dict(zip(l1,l2))
... def li(x):
... try :
... return d[x]
... except KeyError:
... print 'please enter a valid number'
... return li
...
>>> f=liner([3, 4, 6], [0, 1, 2])
>>> f(9)
please enter a valid number
>>> f(3)
0
>>> f(6)
2