首页 文章

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

提问于
浏览
0

我想编写一个接受两个列表的函数,一个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

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

相关问题