Функция Numpy where() в Python и примеры

С помощью метода numpy where() элементы массива ndarray Numpy, удовлетворяющие условиям, могут быть заменены или выполнена заданная обработка. Вы должны установить numpy для этого урока. Также можете проверить свою версию numpy.

Что такое функция np.where() в Python?

Функция np.where() в Python возвращает элементы, выбранные из x или y в зависимости от условия. Если вы хотите выбрать элементы на основе условия, используйте функцию np where(). Функция принимает условное выражение в качестве аргумента и возвращает новый массив numpy.

Синтаксис

Параметры

  1. condition: условное выражение, которое возвращает массив логических значений Numpy.
  2. x, y: массивы(необязательно, т. е. оба передаются или не передаются)
  • Если в методе numpy.where() указаны все аргументы -> condition, x и y, то он вернет элементы, выбранные из x и y, в зависимости от значений в логическом массиве, полученном по условию. Все три массива должны быть одного размера.
  • Если аргументы x и y не передаются, а передается только аргумент условия, то он возвращает кортеж массивов(по одному для каждой оси), содержащих индексы элементов, которые имеют значение True в логическом массиве numpy, возвращаемом условием.

Это говорит о том, что если условие возвращает True для некоторого элемента в нашем массиве, новый массив будет выбирать элементы из x. В противном случае, если False, предметы из y будут взяты.

При этом наш окончательный выходной массив будет массивом с элементами из x, где условие = True, и элементами из y, когда условие = False.

Здесь следует отметить одну вещь: хотя x и y являются необязательными, если вы указываете x, вы ДОЛЖНЫ также указать y. Вы должны сделать это, потому что в этом случае форма выходного массива должна быть такой же, как входной массив.

Возвращаемое значение

Метод where() возвращает новый массив numpy после фильтрации на основе условия, который представляет собой массив логических значений, подобный numpy.

Функция Numpy where() в Python

Пример

Выход:

Numpy.where() выполняет итерацию по массиву bool, и для каждого True он дает соответствующий массив элементов x, а для каждого False он дает соответствующий элемент из массива y. Таким образом, он возвращает массив элементов из x, где условие равно True, и элементы из y в другом месте.

Условие может принимать значение массива([[True, True, True]]), который представляет собой логический массив типа numpy. По умолчанию NumPy поддерживает только числовые значения, но мы также можем привести их к типу bool.

Давайте возьмем другой пример, если условие — это массив([[True, True, False]]), а наш массив — это а = ndarray([[1, 2, 3]]), при применении условия к массиву(а[ :, условие]), мы получим массив ndarray([[1 2]]).

Замена элементов на numpy.where()

Мы будем использовать функцию np.random.randn() для создания двумерного массива и будем выводить только положительные элементы. См. код.

Выход:

Из вывода вы можете видеть, что эти элементы с отрицательными значениями удалены, и вместо них 0 заменяется отрицательными значениями.

Использование np where() с несколькими условиями

Если каждое условное выражение заключено в() и & или | используется, обработка применяется к нескольким условиям.

Выход:

Из вывода видно, что мы применили три условия с помощью оператора and и оператора or. Если значение элементов массива находится в диапазоне от 0,1 до 0,99 или 0,5, то он вернет -1, иначе 19.

Даже в случае нескольких условий нет необходимости использовать np.where() для получения логического значения ndarray.

Обработка элементов, удовлетворяющих условию

Вместо исходного ndarray можно также указать операцию, которая будет выполняться над элементами, если элементы удовлетворяют условию.

Выход:

Вы можете видеть, что он будет умножать каждый элемент на 10, если какой-либо элемент меньше 10. В противном случае он вернет 19 на этом месте.

Бродкастинг с помощью numpy.where()

Если мы предоставим все массивы условий, x и y, numpy будет транслировать их вместе.

См. следующий код.

Выход:

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python