Есть 2-мерный массив NumPy, числа в массиве одного порядка и состоят из комбинаций 1 и 2. Например
2221 2222 2222 2222 1112
2222 2222 1211 2111 1122
2122 1221 2212 1222 1111
И есть “маски”. Это тоже числа, количество цифр в этих числах не может превышать количество цифр в числах массива. Маска может содержать 0, 1 и 2, и показывает чему должны быть равны определенные разряды чисел массива (0 означает, что значение разряда не важно). Примеры масок: 2002, 11, 121, 221. Т.е. маска 2002 означает, что самый старший и самый младший разряды должны быть равны 2, этой маске соответствуют числа 2222, 2112, 2212, 2122.
Нужно в массиве все числа, соответствующие определенной маске заменить на некоторое число (например, 3). Т.к. реальные массивы имеют большую размерность, хочется найти какой-то быстрый способ для такой проверки. Пробовал сделать через битовые операции, но не получилось. Может кто-то что-то подскажет?