numpy.piecewise
- numpy.piecewise(x, condlist, funclist, *args, **kw)[source]
-
Вычислить функцию, заданную кусками.
При заданном наборе условий и соответствующих функций вычислить каждую функцию на входных данных там, где её условие истинно.
- Параметры:
-
- xndarray или скаляр
-
Область входных данных.
- condlistсписок bool массивов или bool скаляров
-
Каждый булевый массив соответствует функции в
funclist. Там, гдеcondlist[i]истинно,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'). - kwсловарь, необязательно
-
Ключевые аргументы, используемые при вызове
piecewise, передаются функциям при выполнении, т.е. если вызовpiecewise(..., ..., alpha=1), то каждая функция вызывается какf(x, alpha=1).
- Возвращаемое значение:
-
- outndarray
-
Выходные данные имеют такую же форму и тип, что и 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]]) |--Примеры
Определим функцию signum, которая равна -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)
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.piecewise.html