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 ,那么该额外的函数是默认值,用于所有条件均为假的位置.

funclist可调用对象,f(x,args,kw) 或标量的列表

只要其对应的条件为 True,就会在 x 上计算每个函数.它应该接受一个 1d 数组作为输入,并给出一个 1d 数组或一个标量值作为输出.如果提供的是标量而不是可调用对象,则假定为常量函数 ( lambda x: scalar ).

args元组,可选

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

kwdict,可选

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

返回:
outndarray

输出与 x 具有相同的形状和类型,并通过在 x 的适当部分上调用 funclist 中的函数来找到,如 condlist 中的布尔数组所定义.任何条件未覆盖的部分的默认值为 0.

参见

choose , select , where

注释

这类似于 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 >= 0x .

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