当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy interpolate.interpn用法及代码示例


本文简要介绍 python 语言中 scipy.interpolate.interpn 的用法。

用法:

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

规则或直线网格上的多维插值。

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

参数

points float 的 ndarray 元组,形状为 (m1, ), ..., (mn, )

定义 n 维规则网格的点。每个维度中的点(即点元组的每个元素)必须严格升序或降序。

values 数组, 形状 (m1, ..., mn, ...)

n 维规则网格上的数据。复杂的数据是可以接受的。

xi ndarray 形状 (..., ndim)

对网格数据进行采样的坐标

method str,可选

要执行的插值方法。支持“linear”, “nearest”, “slinear”, “cubic”, “quintic”, “pchip” 和“splinef2d”。 “splinef2d” 仅支持二维数据。

bounds_error 布尔型,可选

如果为 True,则当在输入数据域之外请求内插值时,会引发 ValueError。如果为 False,则使用fill_value。

fill_value 编号,可选

如果提供,则用于插值域之外的点的值。如果没有,则外推域外的值。方法“splinef2d” 不支持外推。

返回

values_x ndarray,形状 xi.shape[:-1] + values.shape[ndim:]

插值位于xi。请参阅注释以了解以下情况下的行为:xi.ndim == 1.

注意

xi.ndim == 1 的情况下,新轴被插入到返回数组 value_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]

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.interpolate.interpn。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。