【问题标题】:Is there a way to interpolate from a table with data in scipy?有没有办法从表中插入 scipy 中的数据?
【发布时间】:2016-05-06 22:43:11
【问题描述】:

我的问题如下。对于给定的 x,我有一个代码计算函数 f(x) 的值。然而,由于 f(x) 有点太大和复杂,并且程序必须在不同的时间步长通过一个非常大的数据集 (x),所以效率并不高。我想知道 scipy 中是否有一个函数,这样我就可以创建一个具有不同已计算的 f(x) 值的表,例如在文件“function.txt”中保存一个表(当然在我的情况下)该表将从值 1e0、1e8 开始变大):

x    f(x)
1     1 
2     4 
3     9
4     16 
5     25 

然后以某种方式使用插值,这样如果我的程序读取 x = 2.2,它可以从表中已经计算的值估计值 f(x)。

【问题讨论】:

标签: python scipy interpolation


【解决方案1】:

你在 numpy 中有 polyfit 和 polyval :

import numpy as np

x=np.arange(1,6)
y=np.array((1,4,9,16,25))
coeffs=np.polyfit(x,y,deg=5) # eval your polynomial coefficients
x2=np.linspace(np.min(x),np.max(x),1000)
y2=np.polyval(coeffs,x2) # apply your polynomial coeff to a broader set of data

【讨论】:

    【解决方案2】:

    我实际上可以使用 interp1d 以非常简单的方式做我想做的事。以我之前使用的数字为例。

    import numpy
    from scipy.interpolate import interp1d
    
    x = numpy.linspace(1, 100, 1000)
    y = x**2
    
    f = interp1d(x, y)
    xnew = 2.2
    ynew = f(x)
    
    print f(x)
    

    输出:4.84095446798

    【讨论】:

      猜你喜欢
      • 2012-12-10
      • 2021-06-11
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多