2016-01-29 92 views
-1

我的問題如下。我有一個代碼,它爲給定的x計算一個函數f(x)的值。然而,由於f(x)有點太大且複雜,並且程序必須以不同的時間步長通過非常大的數據集(x),所以效率並不高。我想知道是否有一個函數可能在scipy中,這樣我就可以創建一個f(x)的不同已經計算過的值的表,就像保存在一個文件「function.txt」中一樣的表格(當然在我的情況下該表將是較大的從值1E0,1E8)去:有沒有辦法從scipy中的表中插入數據?

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

然後以某種方式使用的內插,例如,如果我的程序讀取是x = 2.2它能夠估計值f(x)的從已經計算的表中的值。

+3

http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.interpolate.interp1d.html – Mel

+0

謝謝!我會試試看 – user3412058

回答

0

你有polyfit和polyval在numpy的:

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

相關問題