numpy.piecewise#
- numpy.piecewise(x, condlist, funclist, *args, **kw)[源代码]#
求值分段定义的函数。
给定一组条件和相应的函数,在输入数据的条件为真之处,对输入数据求值每个函数。
- 参数:
- xndarray 或标量
输入域。
- condlist布尔数组或布尔标量的列表
每个布尔数组对应 funclist 中的一个函数。 wherever condlist[i] 为 True, funclist[i](x) 被用作输出值。
condlist 中的每个布尔数组选择 x 的一个片段,因此应该与 x 具有相同的形状。
condlist 的长度必须与 funclist 的长度相对应。如果多给了一个函数,即
len(funclist) == len(condlist) + 1,那么额外的函数就是默认值,在所有条件都不为真时使用。- funclist可调用对象、f(x,*args,**kw) 或标量的列表
每个函数在其对应条件为 True 的地方在 x 上求值。它应该接受一个一维数组作为输入,并输出一维数组或标量值。如果提供的是标量而不是可调用对象,则假定为一个常数函数(
lambda x: scalar)。- args元组,可选
传递给
piecewise的任何其他参数都会在执行时传递给函数,即,如果调用piecewise(..., ..., 1, 'a'),则每个函数都将以f(x, 1, 'a')的形式调用。- kw字典,可选
在调用
piecewise时使用的关键字参数会在执行时传递给函数,即,如果调用piecewise(..., ..., alpha=1),则每个函数都将以f(x, alpha=1)的形式调用。
- 返回:
- outndarray
输出与 x 具有相同的形状和类型,是通过调用 funclist 中的函数来计算 x 的相应部分得到的,这些部分由 condlist 中的布尔数组定义。未被任何条件覆盖的部分的默认值为 0。
备注
这类似于 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)