【发布时间】:2018-05-14 22:33:59
【问题描述】:
使用 scipy 中的 griddata 用于执行插值(三次样条和其他),我们必须将我们插值的数据作为参数,同时,我们要在其上进行“预测”的新点”。
是否有可能构造一个“griddata 对象”,它有一种方法来预测一个新点,而无需每次都重建一个新的插值样条曲线......? (例如,与回归树一样,我们首先构建树,然后使用 .predict(new_points) 方法)。
这是一个例子:
import pandas as pd
import numpy as np
import sklearn
import scipy.interpolate as itp
n = 100
x1 = np.linspace(-2, 4, n)
X1 = []
X2 = []
for x in x1:
X1.append( [x for i in range(0, n)] )
X2.append( np.linspace(9, 15, n) )
X1 = np.array(X1).flatten()
X2 = np.array(X2).flatten()
Y1 = exp( 2*X1 )
Y2 = 3 * sqrt(X2)
#Data frames :
X = np.transpose( [X1, X2] )
X = pd.DataFrame(X, columns=["X1", "X2"])
Y = np.transpose( [Y1, Y2] )
Y = pd.DataFrame(Y, columns=["Y1", "Y2"])
X_new = np.transpose( [[-2], [9]] )
inter_cubic = itp.griddata(X, Y, X_new, method='cubic', fill_value=nan, rescale=False)
print(inter_cubic)
print(exp(2*(-2)), 3*sqrt(9))
现在 inter_cubic 只是一个 numpy 数组..
有没有办法执行它,或者我们可以使用另一个“样条”构造函数?
【问题讨论】:
标签: python scipy interpolation