當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。