numpy.polynomial.polyutils.mapdomain#
- polynomial.polyutils.mapdomain(x, old, new)[原始碼]#
將線性映射應用於輸入點。
將把定義域 old 映射到定義域 new 的線性映射
offset + scale*x
應用於點 x。- 參數:
- xarray_like
要映射的點。如果 x 是 ndarray 的子型別,則子型別將被保留。
- old, newarray_like
決定映射的兩個定義域。每個定義域都必須(成功地)轉換為包含正好兩個值的一維陣列。
- 回傳值:
- x_outndarray
應用兩個定義域之間的線性映射後,與 x 形狀相同的點陣列。
註解
實際上,這實作了
\[x\_out = new[0] + m(x - old[0])\]其中
\[m = \frac{new[1]-new[0]}{old[1]-old[0]}\]範例
>>> import numpy as np >>> 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, # may vary 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. -1.j , -0.6-0.6j, -0.2-0.2j, 0.2+0.2j, 0.6+0.6j, 1. +1.j ]) >>> new_z = pu.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 ]) # may vary