线性插值使用python从两个表中查找相应的值

时间:2015-01-11 22:42:17

标签: python linear-interpolation

我想编写一个接受两个列表的函数,一个x值和一个y(x)值,并在给定x值时返回相应的y(x)值。我还想使用线性插值来找到列表中数字之间的x值的y(x)。 例如

f = function([3, 4, 6], [0, 1, 2])

print f(3) 应该返回0.0

到目前为止,我还没有完整的代码,但我正在尝试使用

interp1d(numpy.array(xs), numpy.array(ys), 'linear')用于插值

for i in range(len(xs)): return ys[i]这是列表中的值,但我真的不知道怎么把它放在一起

1 个答案:

答案 0 :(得分:0)

您可以zip列表并转换为字典,然后将字典传递给lambda

>>> f=lambda x: dict(zip([3, 4, 6], [0, 1, 2]))[x]
>>> f(3)
0
>>> f(4)
1

但由于上述解决方案可能会引发KeyError,您可以使用以下工厂函数:

>>> 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