Рубрики
Без рубрики

Как использовать Python Numpy. Где-то () метод

В Python мы можем использовать функцию numpy.gh () для выбора элементов из Numpy Array на основе условия. Не только это, но мы можем выполнить некоторые

Автор оригинала: Pankaj Kumar.

В Python мы можем использовать numpy. Где () Функция для выбора элементов из NaMpy Array на основе условия.

Не только это, но мы можем выполнять некоторые операции на тех элементах, если условие удовлетворено.

Давайте посмотрим, как мы можем использовать эту функцию, используя некоторые иллюстративные примеры!

Синтаксис Python Numpy. Где-то ()

Эта функция принимает Numpy-подобный массиву (Ex. Объемный массив целых чисел/логии).

Он возвращает новый Numpy Array, после фильтрации на основе Состояние , который является необъективным массивом логических ценностей.

Например, Состояние может принять значение Массив ([[TRUE, TRUE, TRUE]] ), который является необъективным логическим массивом. (По умолчанию Numpy поддерживает только числовые значения, но мы можем бросить их на Bool также)

Например, если Состояние это массив ([[TRUE, TRUE, FALSE]]) и наш массив – A ([[1, 2, 3]]) При применении условия для массива ( A [:, состояние] ), мы получим массив NDARRAY ([[1 2]]) Отказ

import numpy as np

a = np.arange(10)
print(a[a <= 2]) # Will only capture elements <= 2 and ignore others

Выход

array([0 1 2])

Примечание : Такое же состояние состояния также может быть представлено как А Отказ Это рекомендуемый формат для массива состояния, так как очень утомительно написать его как логический массив

Но что, если мы хотим сохранить размерность результата, а не потерять элементы из нашего оригинального массива? Мы можем использовать numpy. Где () за это.

numpy.where(condition [, x, y])

У нас есть еще два параметра х и y Отказ Что такое?

В основном, что это говорит, что если Состояние Держит истину для некоторых элементов в нашем массиве, новый массив выберет элементы из х Отказ

В противном случае, если это ложь, элементы из y будут приняты.

С этим наш последний массив вывода станет массивом с элементами из х где бы …| Состояние и элементы из y всякий раз, когда Состояние Отказ

Обратите внимание, что хотя х и y Необязательно, если вы укажете х , ты Должен Также укажите y Отказ Это потому, что В этом случае , форма выходной массивы должна быть такой же, как входной массив.

Примечание : Тот же логика применяется как для одиноких, так и для многомерных массивов. В обоих случаях мы фильтруем на основе условия. Также помните, что формы х , y и Состояние транслируются вместе.

Теперь давайте посмотрим на несколько примеров, чтобы правильно понять эту функцию.

Использование Python Numpy. Где ()

Предположим, мы хотим принимать только положительные элементы из Numpy Array и установите все отрицательные элементы на 0, давайте напишем код, используя numpy. Где () Отказ

1. Замените элементы с помощью numpy. Где ()

Мы будем использовать 2-мерный случайный массив здесь и вывод только положительные элементы.

import numpy as np

# Random initialization of a (2D array)
a = np.random.randn(2, 3)
print(a)

# b will be all elements of a whenever the condition holds true (i.e only positive elements)
# Otherwise, set it as 0
b = np.where(a > 0, a, 0)

print(b)

Возможный выпуск

[[-1.06455975  0.94589166 -1.94987123]
 [-1.72083344 -0.69813711  1.05448464]]
[[0.         0.94589166 0.        ]
 [0.         0.         1.05448464]]

Как видите, теперь сохраняется только положительные элементы!

2. Использование Numpy. Где () только с условием

Там может быть некоторая путаница, касающаяся вышеуказанного кода, так как некоторые из вас могут подумать, что тем более интуитивно понятным образом было бы просто написать условие, такое:

import random
import numpy as np

a = np.random.randn(2, 3)
b = np.where(a > 0)
print(b)

Если вы сейчас попробуйте запустить вышеуказанный код, с этим изменением вы получите такое вывод:

(array([0, 1]), array([2, 1]))

Если вы внимательно наблюдаете, B сейчас a кортеж Numpy массивов. И каждый массив – это расположение положительного элемента. Что это значит?

Всякий раз, когда мы предоставляем только условие, эта функция фактически эквивалентна NP.ASARRAY.NONZERO () Отказ

В нашем примере np.asarray (a> 0) вернет логический массив после применения условия, а NP.NONZERO (ARR_LIKE) вернет индексы ненулевых элементов Arr_ike Отказ (См. это ссылка)

Итак, теперь мы посмотрим на более простой пример, который показывает нам, насколько мы можем быть с помощью Numpy!

import numpy as np

a = np.arange(10)

b = np.where(a < 5, a, a * 10)

print(a)
print(b)

Выход

[0 1 2 3 4 5 6 7 8 9]
[ 0  1  2  3  4 50 60 70 80 90]

Здесь условие – это <5 , что будет множество подобному массиву [True True True True True True False False False False False] , х это массив A, а y Является ли массив A * 10. Итак, мы выбираем из единственного, если A <5, а от * 10, если A> 5.

Итак, это преобразует все элементы, путем умножения с 10. Это то, что мы действительно имеем!

Вещание с numpy.gh ()

Если мы предоставим все Состояние , х и y Массивы, Numpy транслируют их вместе.

import numpy as np

a = np.arange(12).reshape(3, 4)

b = np.arange(4).reshape(1, 4)

print(a)
print(b)

# Broadcasts (a < 5, a, and b * 10)
# of shape (3, 4), (3, 4) and (1, 4)
c = np.where(a < 5, a, b * 10)

print(c)

Выход

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[[0 1 2 3]]
[[ 0  1  2  3]
 [ 4 10 20 30]
 [ 0 10 20 30]]

Опять же, здесь вывод выбран на основе условия, поэтому все элементы, но здесь, B транслируется в форме А Отказ (Одно из его измерений имеет только один элемент, поэтому во время вещания не будет ошибок)

Итак, B Теперь станет [[0 1 2 3] [0 1 2 3] [0 1 2 3]] И теперь мы можем выбрать элементы даже из этого вещательного массива.

Таким образом, форма вывода такой же, как форма А Отказ

Заключение

В этой статье мы узнали о том, как мы можем использовать Python numpy. Где () Функция для выбора массивов на основе другого массива условий.

Рекомендации