dask.array.piecewise
dask.array.piecewise¶
- dask.array.piecewise(x, condlist, funclist, *args, **kw)[源代码]¶
评估一个分段定义的函数。
此文档字符串是从 numpy.piecewise 复制的。
Dask 版本可能存在一些不一致性。
给定一组条件和相应的函数,在输入数据上评估每个函数,只要其条件为真。
- 参数
- xndarray 或标量
输入域。
- condlist布尔数组或布尔标量的列表
每个布尔数组对应于 funclist 中的一个函数。在 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
)。- 参数tuple, 可选
传递给 piecewise 的任何进一步参数在执行时都会传递给函数,即,如果调用
piecewise(..., ..., 1, 'a')
,那么每个函数都会被调用为f(x, 1, 'a')
。- kwdict, 可选
在调用 piecewise 时使用的关键字参数会在执行时传递给函数,即,如果调用
piecewise(..., ..., alpha=1)
,那么每个函数都会被调用为f(x, alpha=1)
。
- 返回
- 出ndarray
输出与 x 具有相同的形状和类型,它是通过在 x 的适当部分上调用 funclist 中的函数来找到的,这些部分由 condlist 中的布尔数组定义。未被任何条件覆盖的部分的默认值为 0。
注释
这与选择或选择类似,不同之处在于函数在 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)