Найти - Пользователи
Полная версия: Сравнение чисел по "маске"
Начало » Python для новичков » Сравнение чисел по "маске"
1
voltron
Есть 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). Т.к. реальные массивы имеют большую размерность, хочется найти какой-то быстрый способ для такой проверки. Пробовал сделать через битовые операции, но не получилось. Может кто-то что-то подскажет?
doza_and
Битовые операции тут подойдут если вы будете использовать более естественную кодировку - не десятичную а двоичную, тогда можно будет вырезать нужную вам часть. те не
2121 (десятичное) а int(“1010”,2). Если будете менять на тройки тогда надо по два бита на разряд int(“1010”,4)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB