Я пытаюсь использовать логическое индексирование в 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
для логического индексирования?