Spec-Zone.ru › NumPy 1.14

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, после применения линейного преобразования между двумя областями.

См. также

getdomain, mapparms

Примечания

Эффективно, это реализует:

x\_out = new[0] + m(x - old[0])

где

m = \frac{new[1]-new[0]}{old[1]-old[0]}

Примеры

>>> 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API