numpy.piecewise#

numpy.кусочно(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 везде, где соответствующее условие истинно. Он должен принимать одномерный массив на вход и выдавать одномерный массив или скалярное значение на выходе. Если вместо вызываемого объекта предоставляется скаляр, то постоянная функция (lambda x: scalar) предполагается.

argsкортеж, необязательный

Любые дополнительные аргументы, переданные в piecewise передаются функциям при выполнении, т.е. если вызваны piecewise(..., ..., 1, 'a'), тогда каждая функция вызывается как f(x, 1, 'a').

kwdict, optional

Именованные аргументы, используемые при вызове piecewise передаются в функции при выполнении, т.е., если вызваны piecewise(..., ..., alpha=1), то каждая функция вызывается как f(x, alpha=1).

Возвращает:
выходndarray

Выходные данные имеют ту же форму и тип, что и x, и находятся путём вызова функций в funclist на соответствующих частях x, как определено логическими массивами в condlist. Части, не покрытые ни одним условием, имеют значение по умолчанию 0.

Смотрите также

choose, select, where

Примечания

Это похоже на choose или select, за исключением того, что функции вычисляются на элементах x которые удовлетворяют соответствующему условию из condlist.

Результат:

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

Примеры

>>> import numpy as np

Определите функцию знака, которая равна -1 для x < 0 и +1 за 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 для 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)