Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python从两个表中查找对应值的线性插值_Python_Linear Interpolation - Fatal编程技术网

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

使用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]并将其用于列表中的值,但我真的不

我想写一个函数,它接受两个列表,一个是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]
并将其用于列表中的值,但我真的不知道如何将其组合在一起

您可以
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