在numpy.interp和scipy.interpolate.interp1d(使用kind='linear')之间做选择

22
我正在尝试在`numpy.interp`和`scipy.interpolate.interp1d`(当然使用`kind='linear'`)之间做选择。我意识到它们有不同的接口,但这对我来说并不太重要(我可以编写适配任何接口的代码)。我想知道是否有其他差异需要注意。谢谢。

结果应该是相同的。您可以比较这两种方法的时间测试。 - farenorth
所有输入的x和y值数组的结果保证是相同的吗? - sotrue
我不会保证任何事情,可能会有机器精度差异,但除此之外,我看不出它们会产生不同的结果的原因。 - farenorth
2个回答

27

Numpy.interp 无法处理复数数据或ndim>1的数据,而scipy.interpolate.interp1d可以处理这两种情况。 然而,numpy的插值器速度更快(在较新版本的numpy中可能仍然更快)。


是的,这就是我在寻找的信息。谢谢! - sotrue
@ev-br,直接调用numpy比调用scipy还要快吗?我在scipy 1.5.2的源代码中看到,如果满足某些条件,scipy会自动将插值委托给numpy。 - toliveira

10

虽然numpy返回一个离散数据点的数组,但'interp1d'返回一个函数。您可以在代码中稍后多次使用生成的函数。此外,您可以选择其他方法,而不仅仅是线性插值。


正如我在问题陈述中所指出的,我知道不同的接口和除了kind='linear'之外的方法,但这些并不是我要问的事情。 - sotrue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接