__call__#
- BivariateSpline.__call__(x, y, dx=0, dy=0, сетка=True)[источник]#
Вычисление сплайна или его производных в заданных позициях.
- Параметры:
- x, yarray_like
Входные координаты.
Если сетка равно False, вычислить сплайн в точках
(x[i], y[i]), i=0, ..., len(x)-1. Стандартное правило вещания Numpy соблюдается.Если сетка равен True: вычисляет сплайн в точках сетки, определённых координатными массивами x, y. Массивы должны быть отсортированы по возрастанию.
Порядок осей согласован с
np.meshgrid(..., indexing="ij")и несовместимо с порядком по умолчаниюnp.meshgrid(..., indexing="xy").- dxint
Порядок производной по x
Добавлено в версии 0.14.0.
- dyint
Порядок производной по y
Добавлено в версии 0.14.0.
- сеткаbool
Оценивать ли результаты на сетке, порождённой входными массивами, или в точках, заданных входными массивами.
Добавлено в версии 0.14.0.
Примеры
Предположим, что мы хотим билинейно интерполировать экспоненциально затухающую функцию в 2 измерениях.
>>> import numpy as np >>> from scipy.interpolate import RectBivariateSpline
Мы сэмплируем функцию на грубой сетке. Обратите внимание, что индексирование по умолчанию=”xy” в meshgrid приведёт к неожиданному (транспонированному) результату после интерполяции.
>>> xarr = np.linspace(-3, 3, 100) >>> yarr = np.linspace(-3, 3, 100) >>> xgrid, ygrid = np.meshgrid(xarr, yarr, indexing="ij")
Функция интерполяции убывает быстрее по одной оси, чем по другой.
>>> zdata = np.exp(-np.sqrt((xgrid / 2) ** 2 + ygrid**2))
Далее мы выполняем выборку на более мелкой сетке с использованием интерполяции (kx=ky=1 для билинейной).
>>> rbs = RectBivariateSpline(xarr, yarr, zdata, kx=1, ky=1) >>> xarr_fine = np.linspace(-3, 3, 200) >>> yarr_fine = np.linspace(-3, 3, 200) >>> xgrid_fine, ygrid_fine = np.meshgrid(xarr_fine, yarr_fine, indexing="ij") >>> zdata_interp = rbs(xgrid_fine, ygrid_fine, grid=False)
И проверить, что результат совпадает с входными данными, построив график обоих.
>>> import matplotlib.pyplot as plt >>> fig = plt.figure() >>> ax1 = fig.add_subplot(1, 2, 1, aspect="equal") >>> ax2 = fig.add_subplot(1, 2, 2, aspect="equal") >>> ax1.imshow(zdata) >>> ax2.imshow(zdata_interp) >>> plt.show()