scipy.interpolate.

interpn#

scipy.interpolate.interpn(points, values, xi, method='linear', bounds_error=True, fill_value=nan)[source]#

在规则或直线网格上进行多维插值。

严格来说,并非所有规则网格都受支持 - 此函数适用于*直线*网格,即具有均匀或不均匀间距的矩形网格。

参数:
points浮点数 ndarray 元组,形状为 (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]