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, за исключением того, что функции вычисляются на элементах 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)