Предполагая, что:
маскирует эти значения в массивном двумерном массиве, где ANY из последних 3 битов значения равно 1
Вы имеете в виду « выбрать тех элементов, в которых любой из трех младших значащих битов отличен от нуля», вы можете сделать:
mask = np.bitwise_and(arr, 0b111) > 0
Возможно, используя функцию numpy.bitwise_and
вместо оператора &
делает код более читабельным.
Пример выполнения
In [35]: arr = np.arange(17)
In [36]: arr
Out[36]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
In [37]: mask = np.bitwise_and(arr, 0b111) > 0
In [38]: mask
Out[38]:
array([False, True, True, True, True, True, True, True, False,
True, True, True, True, True, True, True, False])
In [39]: for x in arr[mask]:
...: b = bin(x)
...: print('{}{:0>5}'.format(b[:2], b[2:]))
...:
...:
0b00001
0b00010
0b00011
0b00100
0b00101
0b00110
0b00111
0b01001
0b01010
0b01011
0b01100
0b01101
0b01110
0b01111