代码之家  ›  专栏  ›  技术社区  ›  Thomas Wagenaar

如何反转scipy.interpolate.interp1d行为

  •  0
  • Thomas Wagenaar  · 技术社区  · 3 年前

    来自 documentation 的scipy.interpolate.interp1d:

    x和y是用于近似某个函数f:y=f(x)的值的数组。此类返回一个函数,该函数的调用方法使用插值来查找新点的值。

    参数

    x(N,)array_like:实数的一维数组。

    y(,N,)array_like:实数的N-D数组。y沿插值轴的长度必须等于x的长度。

    所以基本上,它假设我有一些 x 为此我计算了倍数 y=f(x) 我想插值。但我的情况正好相反:我有一个单身 y 我想为许多不同的数组插值 x 阵列。换句话说,我的情况是:

    import numpy as np
    from scipy.interpolate import interp1d
    
    n_to_interpolate = 10
    
    x = np.cumsum(np.random.rand(n_to_interpolate,100),axis=1)
    y = np.linspace(0,1,100)
    
    interp1d(x,y)
    

    但这会产生一个错误,因为形状不匹配。有办法实现我想要的吗?

    0 回复  |  直到 3 年前
        1
  •  0
  •   ev-br    3 年前

    你需要在的1d切片上循环 x 大堆

    如果您只需要线性插值, np.interp interp1d