numpy.piecewise#

numpy.piecewise(x, condlist, funclist, *args, **kw)[原始碼]#

評估分段定義的函數。

給定一組條件和對應的函數,在輸入資料上評估每個函數,條件為真之處。

參數:
xndarray 或純量

輸入域。

condlist布林陣列或布林純量列表

每個布林陣列對應到 funclist 中的一個函數。 只要 condlist[i] 為 True,就會使用 funclist[i](x) 作為輸出值。

condlist 中的每個布林陣列選取 x 的一部分,因此應與 x 具有相同的形狀。

condlist 的長度必須與 funclist 的長度對應。 如果給定一個額外函數,即如果 len(funclist) == len(condlist) + 1,則該額外函數為預設值,用於所有條件皆為 false 的情況。

funclist可呼叫物件列表,f(x,*args,**kw),或純量

每個函數都會在其對應條件為 True 的任何位置,在 x 上評估。 它應接受 1d 陣列作為輸入,並給出 1d 陣列或純量值作為輸出。 如果提供的不是可呼叫物件,而是純量,則會假定為常數函數 (lambda x: scalar)。

argstuple,選用

傳遞給 piecewise 的任何其他引數都會在執行時傳遞給函數,即,如果呼叫 piecewise(..., ..., 1, 'a'),則每個函數都會以 f(x, 1, 'a') 的形式呼叫。

kwdict,選用

在呼叫 piecewise 中使用的關鍵字引數會在執行時傳遞給函數,即,如果呼叫 piecewise(..., ..., alpha=1),則每個函數都會以 f(x, alpha=1) 的形式呼叫。

回傳值:
outndarray

輸出與 x 具有相同的形狀和類型,並透過在 x 的適當部分上呼叫 funclist 中的函數來找到,如 condlist 中的布林陣列所定義。 任何條件未涵蓋的部分都具有預設值 0。

另請參閱

chooseselectwhere

註解

這與 choose 或 select 類似,不同之處在於函數會在 x 中滿足 condlist 中對應條件的元素上評估。

結果為

      |--
      |funclist[0](x[condlist[0]])
out = |funclist[1](x[condlist[1]])
      |...
      |funclist[n2](x[condlist[n2]])
      |--

範例

>>> import numpy as np

定義符號函數,當 x < 0 時為 -1,當 x >= 0 時為 +1。

>>> x = np.linspace(-2.5, 2.5, 6)
>>> np.piecewise(x, [x < 0, x >= 0], [-1, 1])
array([-1., -1., -1.,  1.,  1.,  1.])

定義絕對值,當 x <0 時為 -x,當 x >= 0 時為 x

>>> np.piecewise(x, [x < 0, x >= 0], [lambda x: -x, lambda x: x])
array([2.5,  1.5,  0.5,  0.5,  1.5,  2.5])

將相同的函數套用至純量值。

>>> y = -2
>>> np.piecewise(y, [y < 0, y >= 0], [lambda x: -x, lambda x: x])
array(2)