numpy.分段#
- 麻木的。分段( x , condlist , funclist , * args , ** kw ) [来源] #
评估分段定义的函数。
给定一组条件和相应的函数,只要条件为真,就对输入数据评估每个函数。
- 参数:
- x ndarray 或标量
输入域。
- condlist布尔数组或布尔标量列表
每个布尔数组对应于funclist中的一个函数。只要 condlist[i]为 True,funclist[i](x)就用作输出值。
condlist中的每个布尔数组都会选择x的一部分,因此应与x具有相同的形状。
condlist的长度必须与funclist的长度相对应。如果给出一个额外函数,即 if ,那么该额外函数就是默认值,在所有条件均为 false 的情况下使用。
len(funclist) == len(condlist) + 1
- funclist可调用对象、f(x,*args,**kw) 或标量的列表
每个函数都会在x上进行计算,只要其对应的条件为 True。它应该采用一维数组作为输入,并给出一维数组或标量值作为输出。如果提供标量而不是可调用函数,则假定为常量函数 ( )。
lambda x: scalar
- args元组,可选
给定的任何其他参数
piecewise
都会在执行时传递给函数,即,如果调用,则每个函数都被称为。piecewise(..., ..., 1, 'a')
f(x, 1, 'a')
- kw字典,可选
调用中使用的关键字参数
piecewise
在执行时传递给函数,即,如果调用 ,则每个函数都被调用为 。piecewise(..., ..., alpha=1)
f(x, alpha=1)
- 返回:
- 输出数组
输出的形状和类型与 x 相同,并且可以通过在x的适当部分调用funclist中的函数来找到,如condlist中的布尔数组所定义。任何条件未涵盖的部分的默认值为 0。
笔记
这与 Choose 或 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
for和for 。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)