Найдите оставшуюся маску между 2 масками в numpy для 2D-массива

#numpy #multidimensional-array #mask

#numpy #многомерный массив #маска

Вопрос:

Допустим, у меня есть 2D массив:

 main = np.random.random((300, 200))
  

И у меня есть две маски для этого массива:
например,

 mask1 = list((np.random.randint((100), size = 50), np.random.randint((200), size = 50)))
mask2 = list((np.random.randint((20), size = 10), np.random.randint((20), size = 10)))
  

Я хочу заменить основные значения в 2D-массиве следующим образом:

 main[mask1]=2
main[mask2]=1
  

это отлично работает, но я также хочу заменить все индексы, которые не являются маской 1 или маской 2, на ноль.

Я думал о чем-то вроде:

 main[~mask1] amp; main[~mask2] = 0
  

это ни к чему меня не приводит, поэтому любая помощь приветствуется!

Ответ №1:

Я думаю, что для вашего требования лучшим подходом является построение массива с нулевым заполнением той же формы, что и main и присваивание 1 и 2 использование mask1 и mask2

 main = np.zeros(main.shape)
main[mask1]=2
main[mask2]=1