numpy interp减少xp

chw*_*w21 7 python interpolation numpy

我想插入一个numpy数组,而np.interp几乎完全符合我的要求:

interp(x, xp, fp, left=None, right=None)
One-dimensional linear interpolation.
Run Code Online (Sandbox Code Playgroud)

除了这个位:

不检查x坐标序列xp是否正在增加.如果xp没有增加,结果是无稽之谈.

我的xp正在下降,所以哪个更好:反转xp和fp的方向:

np.interp(x, xp[::-1], fp[::-1])
Run Code Online (Sandbox Code Playgroud)

或反转x和xp:

np.interp(-x, -xp, fp)
Run Code Online (Sandbox Code Playgroud)

还是有更好的方法?

chw*_*w21 5

感谢所有提供意见的人,尤其是@Jaime。

我试验了一下,得出了这样的结论:

1)除了舍入误差,我提到的两种方法都有相同的结果。

2)他们花费的时间几乎相同

3)我尝试了 scipy 版本,但它会拒绝假设排序标志。也许我的 scipy 版本已经过时了。我怀疑如果该标志被提升,scipy 会在内部对数组进行排序。但是这些值是排序的,只是在相反的方向,所以它不需要这样做。

无论如何,我将使用反向方法:

np.interp(x, xp[::-1], fp[::-1])
Run Code Online (Sandbox Code Playgroud)

请记住,在这种情况下,如果需要,您还必须反转leftand right