interpn#
- scipy.interpolate.interpn(points, values, xi, method='linear', bounds_error=True, fill_value=nan)[源代码]#
在规则或直线网格上的多维插值。
严格来说,并非所有规则网格都支持 - 此函数适用于直线网格,即具有均匀或不均匀间距的矩形网格。
- 参数:
- points浮点数数组的元组,形状为 (m1, ), …, (mn, )
定义 n 维规则网格的点。每个维度中的点(即 points 元组的每个元素)必须严格升序或降序。
- values类似数组,形状为 (m1, …, mn, …)
n 维规则网格上的数据。接受复数数据。
自版本 1.13.0 起弃用: 复数数据在
method="pchip"
中已弃用,并且在 SciPy 1.15.0 中将引发错误。这是因为PchipInterpolator
仅适用于实数值。如果您尝试使用传递数组的实数分量,请对values
使用np.real
。- xi形状为 (…, ndim) 的 ndarray
用于采样网格数据的坐标
- methodstr,可选
要执行的插值方法。支持“linear”、“nearest”、“slinear”、“cubic”、“quintic”、“pchip”和“splinef2d”。“splinef2d”仅支持二维数据。
- bounds_errorbool,可选
如果为 True,则当请求输入数据域之外的插值时,会引发 ValueError。如果为 False,则使用 fill_value。
- fill_value数字,可选
如果提供,则为插值域之外的点使用的值。如果为 None,则域之外的值将被外推。“splinef2d”方法不支持外推。
- 返回:
- values_xndarray,形状为 xi.shape[:-1] + values.shape[ndim:]
xi 的插值。有关
xi.ndim == 1
时的行为,请参见注释。
另请参见
NearestNDInterpolator
N 维非结构化数据的最近邻插值
LinearNDInterpolator
N 维非结构化数据上的分段线性插值
RegularGridInterpolator
任意维度的规则或直线网格上的插值(
interpn
包装此类)。RectBivariateSpline
矩形网格上的双变量样条近似
scipy.ndimage.map_coordinates
具有相等间距的网格上的插值(例如,适用于 N 维图像重采样)
注释
在版本 0.14 中添加。
在
xi.ndim == 1
的情况下,新轴插入到返回数组 values_x 的 0 位置,因此其形状改为(1,) + values.shape[ndim:]
。如果输入数据使得输入维度具有不相称的单位并且相差多个数量级,则插值器可能会出现数值伪影。考虑在插值之前重新缩放数据。
示例
在规则 3-D 网格的点上评估一个简单的示例函数
>>> import numpy as np >>> from scipy.interpolate import interpn >>> def value_func_3d(x, y, z): ... return 2 * x + 3 * y - z >>> x = np.linspace(0, 4, 5) >>> y = np.linspace(0, 5, 6) >>> z = np.linspace(0, 6, 7) >>> points = (x, y, z) >>> values = value_func_3d(*np.meshgrid(*points, indexing='ij'))
在某个点评估插值函数
>>> point = np.array([2.21, 3.12, 1.15]) >>> print(interpn(points, values, point)) [12.63]