numpy.polynomial.polyutils.mapdomain
-
numpy.polynomial.polyutils.mapdomain(x, old, new)[source] -
Применить линейное преобразование к входным точкам.
Линейное преобразование
offset + scale*x, отображающее областьoldна областьnew, применяется к точкамx.Параметры: x : array_like
Точки, подлежащие преобразованию. Если
xявляется подтипом ndarray, подтип будет сохранён.old, new : array_like
Две области, определяющие преобразование. Каждая должна (успешно) преобразовываться в одномерные массивы, содержащие ровно два значения.
Возвращает: x_out : ndarray
Массив точек той же формы, что и
x, после применения линейного преобразования между двумя областями.Примечания
Эффективно, это реализует:
где
Примеры
>>> from numpy.polynomial import polyutils as pu >>> old_domain = (-1,1) >>> new_domain = (0,2*np.pi) >>> x = np.linspace(-1,1,6); x array([-1. , -0.6, -0.2, 0.2, 0.6, 1. ]) >>> x_out = pu.mapdomain(x, old_domain, new_domain); x_out array([ 0. , 1.25663706, 2.51327412, 3.76991118, 5.02654825, 6.28318531]) >>> x - pu.mapdomain(x_out, new_domain, old_domain) array([ 0., 0., 0., 0., 0., 0.])Также работает для комплексных чисел (и, следовательно, может быть использована для отображения любой линии в комплексной плоскости на любую другую линию в ней).
>>> i = complex(0,1) >>> old = (-1 - i, 1 + i) >>> new = (-1 + i, 1 - i) >>> z = np.linspace(old[0], old[1], 6); z array([-1.0-1.j , -0.6-0.6j, -0.2-0.2j, 0.2+0.2j, 0.6+0.6j, 1.0+1.j ]) >>> new_z = P.mapdomain(z, old, new); new_z array([-1.0+1.j , -0.6+0.6j, -0.2+0.2j, 0.2-0.2j, 0.6-0.6j, 1.0-1.j ])
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.polynomial.polyutils.mapdomain.html