numpy.piecewise

numpy.piecewise(x, condlist, funclist, *args, **kw)[源代码]

计算分段定义的函数。

给定一组条件和相应的函数,在输入数据的条件为真的情况下对每个函数进行评估。

参数
xndarray或scalar

输入域。

condlistbool数组或bool scalars的列表

每个布尔数组对应于中的函数 funclist . 无论哪里 condlist[i] 是真的, funclist[i](x) 用作输出值。

中的每个布尔数组 condlist 选择一个 x ,因此形状应与 x .

长度 condlist 必须对应于 funclist . 如果给出了一个额外的函数,即 len(funclist) == len(condlist) + 1 ,则该额外函数是默认值,在所有条件都为假的情况下使用。

funclist可调用文件列表,f(x, ARGS, *kw)或scalars

对每个函数进行评估 x 只要它的对应条件是真的。它应该以一个一维数组作为输入,并给出一个一维数组或一个标量值作为输出。如果提供的不是可调用的标量,而是常量函数 (lambda x: scalar )。

args可选元组

任何进一步的论据 piecewise 在执行时传递给函数,即如果调用 piecewise(..., ..., 1, 'a') ,然后调用每个函数 f(x, 1, 'a') .

kw可选的

调用中使用的关键字参数 piecewise 在执行时传递给函数,即如果调用 piecewise(..., ..., alpha=1) ,然后调用每个函数 f(x, alpha=1) .

返回
out恩达雷

输出的形状和类型与X相同,可以通过调用 funclist 在适当的部分 x ,由中的布尔数组定义 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]])
      |--

实例

定义sigma函数,其为-1 x < 0 +1 x >= 0 .

>>> 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 对于 x <0x 对于 x >= 0 .

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