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)
还是有更好的方法?
感谢所有提供意见的人,尤其是@Jaime。
我试验了一下,得出了这样的结论:
1)除了舍入误差,我提到的两种方法都有相同的结果。
2)他们花费的时间几乎相同
3)我尝试了 scipy 版本,但它会拒绝假设排序标志。也许我的 scipy 版本已经过时了。我怀疑如果该标志被提升,scipy 会在内部对数组进行排序。但是这些值是排序的,只是在相反的方向,所以它不需要这样做。
无论如何,我将使用反向方法:
np.interp(x, xp[::-1], fp[::-1])
Run Code Online (Sandbox Code Playgroud)
请记住,在这种情况下,如果需要,您还必须反转left
and right
。