Функция piecewise
Функция piecewise применяется к массиву поэлементно
и позволяет выбрать значение для каждого элемента на основе
заданных условий. Первым параметром передаётся входной массив,
вторым - список условий, третьим - список соответствующих функций
или значений. Если ни одно условие не выполняется, используется
значение по умолчанию 0.
Синтаксис
np.piecewise(x, condlist, funclist)
Пример
Применим функцию к одномерному массиву, заменив отрицательные значения на 0,
а положительные оставив без изменений:
import numpy as np
arr = np.array([-2, -1, 0, 1, 2])
res = np.piecewise(arr, [arr < 0], [0])
print(res)
Результат выполнения кода:
[0 0 0 1 2]
Пример
Заменим отрицательные числа на 0, положительные на 1,
а нулевые оставим без изменений:
import numpy as np
arr = np.array([-2, -1, 0, 1, 2])
res = np.piecewise(
arr,
[arr < 0, arr > 0],
[0, 1]
)
print(res)
Результат выполнения кода:
[0 0 0 1 1]
Пример
Используем функции вместо скалярных значений: для отрицательных элементов вычислим квадрат, для положительных - модуль:
import numpy as np
arr = np.array([-3, -2, -1, 0, 1, 2, 3])
res = np.piecewise(
arr,
[arr < 0, arr > 0],
[lambda x: x**2, np.abs]
)
print(res)
Результат выполнения кода:
[9 4 1 0 1 2 3]
Пример
Работа с двумерным массивом: элементы меньше 0 заменим на -1,
больше 0 - на 1, нули оставим без изменений:
import numpy as np
arr = np.array([[-2, -1, 0], [1, 2, 3]])
res = np.piecewise(
arr,
[arr < 0, arr > 0],
[-1, 1]
)
print(res)
Результат выполнения кода:
[[-1 -1 0]
[ 1 1 1]]
Пример
Использование нескольких условий с функцией, возвращающей разные значения в зависимости от интервала:
import numpy as np
arr = np.array([-5, -2, 0, 3, 7])
res = np.piecewise(
arr,
[arr < -1, (arr >= -1) & (arr <= 2), arr > 2],
[-10, 0, 10]
)
print(res)
Результат выполнения кода:
[-10 -10 0 10 10]