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

args元组,可选

传递给 piecewise 的任何其他参数在执行时都会传递给函数,即,如果调用 piecewise(..., ..., 1, 'a'),则每个函数都将作为 f(x, 1, 'a') 被调用。

kw字典,可选

调用 piecewise 时使用的关键字参数在执行时会传递给函数,即,如果调用 piecewise(..., ..., alpha=1),则每个函数都将作为 f(x, alpha=1) 被调用。

返回:
outndarray

输出的形状和类型与 x 相同,通过在 x 的适当部分(由 condlist 中的布尔数组定义)上调用 funclist 中的函数来获得。未被任何条件覆盖的部分的默认值为 0。

另请参阅

choose, select, where

备注

这类似于 `choose` 或 `select`,不同之处在于函数是在满足 condlist 中相应条件的 x 元素上计算的。

结果为

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