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) 或标量
每个函数都在 x 上进行计算,只要其对应的条件为 True. 它应该接受一个 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,不同之处在于函数在 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 >= 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)