Numpy Boolean Indexing для совпадения нескольких значений - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь использовать логическое индексирование в numpy для создания логического массива, соответствующего существованию определенных значений в массиве.

Я сделал очевидную попытку:

x = np.array([1, 2, 3, 2, 5, 3, 1, 2, 3, 4, 5])

xBool = x == 2
xBool2 = x == 3
xBool3 = x == 5

x[xBool] = 0
x[xBool2] = 0
x[xBool3] = 0

print(x)

- Вывод -

>>> 
[1 0 0 0 0 0 1 0 0 4 0]

Это то, что я хочу, но, как видно из кода, для каждого совпадения требуются отдельные строки.Это может занять очень много времени для более чем 3 сравнений.

Затем я попробовал следующее:

y = np.array([1, 2, 3, 2, 5, 3, 1, 2, 3, 4, 5])

yBool = y in (2, 3, 5)

y[yBool] = 0

print(y)

Однако я получил сообщение об ошибке:

ValueError: The truth value of an array with more than one element is ambiguous.

Use a.any() or a.all()

Яне знаете, как быстро выполнить несколько сравнений, а не использовать отдельные логические массивы.Можно ли использовать OR для логического индексирования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...