NumPy参考 >例行程序 >Functional programming > numpy.piecewise
numpy.
piecewise
(x,condlist,funclist,* args,** kw )[源代码] ¶评估分段定义的函数。
给定一组条件和相应的功能,请在条件为真的情况下在输入数据上评估每个功能。
输入域。
每个布尔数组对应于funclist中的一个函数。只要 condlist [i]为True,就将funclist [i](x)用作输出值。
condlist中的每个布尔数组都选择一个x,因此应与x具有相同的形状。
的长度condlist必须对应的funclist。如果给出了一个附加函数,即if
,则该附加函数是默认值,在所有条件均为假的情况下使用。len(funclist) == len(condlist) + 1
每个功能之上评价X无论其对应的条件为真。它应该以1d数组作为输入,并给出1d数组或标量值作为输出。如果提供了标量而不是可调用的标量,则假定为常数函数()。lambda x: scalar
给定的任何其他参数piecewise
在执行时传递给函数,即,如果被调用,则每个函数都称为。piecewise(..., ..., 1, 'a')
f(x, 1, 'a')
调用piecewise
中使用的关键字参数在执行时传递给函数,即,如果被调用
,则每个函数都称为
。piecewise(..., ..., alpha=1)
f(x, alpha=1)
输出的形状和类型与x相同,可以通过在funclist上的x的适当部分上调用函数来找到,这由condlist中的布尔数组定义。任何条件未涵盖的部分的默认值为0。
笔记
这类似于select或select,不同之处在于,对满足condlist中相应条件 的x元素求值函数。
结果是:
|--
|funclist[0](x[condlist[0]])
out = |funclist[1](x[condlist[1]])
|...
|funclist[n2](x[condlist[n2]])
|--
例子
定义sigma函数,对于,其值为-1,对于+1 。x < 0
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 <0
x
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)