Python 插值

26 投票
1 回答
45942 浏览
提问于 2025-04-15 13:15

我有一组数据,长得像这样:

Table-1 
    X1    | Y1
    ------+--------
    0.1   | 0.52147
    0.02  | 0.8879 
    0.08  | 0.901
    0.11  | 1.55 
    0.15  | 1.82
    0.152 | 1.95

Table-2
    X2   | Y2
    -----+------
    0.2  | 0.11
    0.21 | 0.112
    0.34 | 0.120  
    0.33 | 1.121       

我需要从表2中找出Y2的值,来对应表1中的X1值,也就是说,我需要为以下的X值找到Y2的值:

    X1     |  Y2
    -------+-------
    0.1    |
    0.02   |
    0.08   |
    0.11   |
    0.15   |
    0.152  |

注意:表1和表2的间隔不一样。也就是说,(X, Y)的数量会不同,比如这里表1有6个(X1, Y1)的条目,而表2只有4个(X2, Y2)的条目。

我应该在Numpy中使用哪个插值算法,接下来该怎么做呢?

1 个回答

32

numpy.interp 这个函数看起来正是你需要的:把你的 X1 作为第一个参数 x,X2 作为第二个参数 xp,Y2 作为第三个参数 fp,这样你就能得到与 X1 坐标对应的 Y 值。

Y2_at_X1 = np.interp(X1, X2, Y2)

我假设你想完全忽略现有的 Y1 值。这段代码就是这么做的。否则你需要更清楚地说明你对 Y1 的需求是什么!

如果你想要的不仅仅是线性插值,我建议你看看 scipy.interpolate 以及它的 教程,而不是试图让 numpy 超出它的简单性 ;-).

撰写回答