scipy.interpolate.RegularGridInterpolator

class scipy.interpolate.RegularGridInterpolator(points, values, method='linear', bounds_error=True, fill_value=nan)[源代码]

任意维正则网格上的插值

数据必须定义在规则网格上;但是网格间距可能不均匀。支持线性插值和最近邻插值。设置插补器对象后,插值方法( 线性最近的 )可以在每次评估时选择。

参数
points浮点数的元组,形状为(M1,),.,(Mn,)

这些点定义了n维的规则栅格。

values类似数组,形状(M1,.,Mn,.)

n维的规则网格上的数据。

method字符串,可选

要执行的插值方法。支持“线性”和“最近”。此参数将成为对象的默认参数 __call__ 方法。默认值为“线性”。

bounds_error布尔值,可选

如果为True,则在输入数据的域外请求内插值时,将引发ValueError。如果为false,则 fill_value 是使用的。

fill_value数字,可选

如果提供,则为插值域外的点使用的值。如果无,则外推域之外的值。

参见

NearestNDInterpolator

N维非结构化数据的最近邻插值

LinearNDInterpolator

N维非结构化数据的分段线性插值

注意事项

与LinearNDInterpolator和NearestNDInterpolator相反,该类利用规则网格结构避免了昂贵的输入数据三角剖分。

如果有任何 points 具有大小为1的维数,则线性插值将返回 nan 价值。在这种情况下,最近邻插值将照常工作。

0.14 新版功能.

参考文献

1

Python包 正则格栅 作者:约翰尼斯·布赫纳,参见https://pypi.python.org/pypi/regulargrid/

2

维基百科,“三线性插值”,https://en.wikipedia.org/wiki/Trilinear_interpolation

3

书名/作者The Wiser,and Sergio E.Zarantonello。“关于多维分段线性和多线性表格插值的注记”数学课。电脑。1988年(50.181):1891960年。https://www.ams.org/journals/mcom/1988-50-181/S0025-5718-1988-0917826-0/S0025-5718-1988-0917826-0.pdf

示例

在三维栅格点上计算一个简单的示例函数:

>>> from scipy.interpolate import RegularGridInterpolator
>>> def f(x, y, z):
...     return 2 * x**3 + 3 * y**2 - z
>>> x = np.linspace(1, 4, 11)
>>> y = np.linspace(4, 7, 22)
>>> z = np.linspace(7, 9, 33)
>>> xg, yg ,zg = np.meshgrid(x, y, z, indexing='ij', sparse=True)
>>> data = f(xg, yg, zg)

data 现在是一个3-D数组,具有 data[i,j,k] = f(x[i], y[j], z[k]) 。接下来,根据该数据定义插值函数:

>>> my_interpolating_function = RegularGridInterpolator((x, y, z), data)

计算两点处的插值函数 (x,y,z) = (2.1, 6.2, 8.3)(3.3, 5.2, 7.1)

>>> pts = np.array([[2.1, 6.2, 8.3], [3.3, 5.2, 7.1]])
>>> my_interpolating_function(pts)
array([ 125.80469388,  146.30069388])

这确实非常接近于 [f(2.1, 6.2, 8.3), f(3.3, 5.2, 7.1)]

方法:

__call__ \(xi[, method] )

坐标处的插值