Я довольно новичок в Python и numpy, и я просто не могу заставить это работать без ручной итерации.
У меня есть n-мерный массив данных со значениями с плавающей запятой и булевой "маской" одинаковой формымассив.Из этого мне нужно получить новый массив в той же форме, что и остальные, со всеми значениями из массива данных, где массив масок в той же позиции равен True
.Все остальное должно быть 0.
:
# given
data = np.array([[1., 2.], [3., 4.]])
mask = np.array([[True, False], [False, True]])
# target
[[1., 0.], [0., 4.]]
Похоже, что numpy.where()
может предложить это, но я не могу заставить его работать.
Бонус: не создавайте новый массив, а заменяйтезначения данных на месте, где маска False
для предотвращения выделения новой памяти.
Спасибо!