Bit-Packing numpy ( SciPY ) массив делает то, что вы ищете.
В примере показан массив 4x3 бит (логический), упакованный в 4 8-битных байта. unpackbits распаковывает массивы uint8 в логический выходной массив, который можно использовать в вычислениях.
>>> a = np.array([[[1,0,1],
... [0,1,0]],
... [[1,1,0],
... [0,0,1]]])
>>> b = np.packbits(a,axis=-1)
>>> b
array([[[160],[64]],[[192],[32]]], dtype=uint8)
Если вам нужны 1-битные пиксельные изображения, PIL - это место для поиска.