Я думаю, что идея, подобная приведенной ниже, сработает.
import numpy
a = numpy.arange(9).reshape(3, 3)
# array([[0, 1, 2],
# [3, 4, 5],
# [6, 7, 8]])
b = a > 4
# array([[False, False, False],
# [False, False, True],
# [ True, True, True]])
c = numpy.zeros(a.shape)
# array([[0., 0., 0.],
# [0., 0., 0.],
# [0., 0., 0.]])
c[~b] = 1
# array([[1., 1., 1.],
# [1., 1., 0.],
# [0., 0., 0.]])
Это означает, что вы можете использовать свою маску для изменения только определенных элементов массива, имеющих одинаковую форму.