Манипулирование массивом numpy с условием на основе условия для второго массива в Python - PullRequest
1 голос
/ 26 апреля 2020

У меня есть два numpy массива:

d1 = np.array([[1, 2, 1], [4, 3, 4], [4, 9, 0]])
d2 = np.array([[1, 0, 1], [0, 0, 0], [1, 0, 0]])

Я хотел бы выбрать значения в d1, где значение d2 равно 1 и в зависимости от условия измените выбранное значение в d1.

Например, я хочу выбрать значения d1, где d2 равно 1, посмотреть, меньше ли они 3 и меньше ли 3, замените их на 10. Итак, результат будет:

np.array([[10, 2, 10], [4, 3, 4], [4, 9, 0]])

Я знаю, как использовать l oop, но меня интересует решение по индексированию, если это возможно.

1 Ответ

1 голос
/ 26 апреля 2020

Вы можете использовать np.where здесь, объединяя оба условия с bitwise AND:

np.where((d1<3)&(d2==1), 10, d1)

array([[10,  2, 10],
       [ 4,  3,  4],
       [ 4,  9,  0]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...