有没有办法从scipy中的数据表中插入?

时间:2016-01-29 08:56:42

标签: python scipy interpolation

我的问题如下。我有一个代码,为给定的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)。

2 个答案:

答案 0 :(得分:0)

你在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

答案 1 :(得分:0)

我实际上可以使用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