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] )坐标处的插值