numpy.piecewise

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.piecewise.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

numpy.piecewise(x, condlist, funclist, *args, **kw)[source]

评估分段定义的函数。

给定一组条件和相应的函数,对条件为真的每个函数求值。

参数:

x:ndarray

输入域。

condlist:bool数组的列表

每个布尔数组对应于funclist中的函数。condlist [i]为真的情况下,使用funclist [i](x)作为输出值。

condlist中的每个布尔数组选择一个x,因此应与x形状相同。

condlist的长度必须对应于funclist的长度。如果给出一个额外的函数,即如果len(funclist) - len(condlist) == t4 > 1,那么该额外函数是默认值,在所有条件为假的情况下使用。

funclist:可调用项列表,f(x,* args,** kw)或标量

每个函数在x上计算,无论其对应的条件为True。它应该使用数组作为输入,并给出一个数组或标量值作为输出。如果不是可调用的,而是提供标量,则常数函数(λ x: 标量)假定。

args:tuple,可选

任何给予piecewise的进一步的参数在执行时传递给函数,即如果调用分段(..., ..., t5> 1, 'a'),则每个函数称为f(x, 1, 'a')

kw:dict,可选

用于调用piecewise的关键字参数在执行时传递给函数,即如果调用分段(..., ..., t5> lambda = 1),则每个函数被称为f(x, lambda = 1) / t7>。

返回:

out:ndarray

输出与x具有相同的形状和类型,并且通过调用x的适当部分的funclist中的函数找到,由中的布尔数组定义。 condlist未被任何条件覆盖的部分的默认值为0。

也可以看看

chooseselectwhere

笔记

这类似于选择或选择,除了对x的元素评估满足condlist的相应条件的函数。

其结果是:

      |--
      |funclist[0](x[condlist[0]])
out = |funclist[1](x[condlist[1]])
      |...
      |funclist[n2](x[condlist[n2]])
      |--

例子

Define the sigma function, which is -1 for x < 0 and +1 for 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.])

Define the absolute value, which is -x for x <0 and x for 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])