#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