Расширение до 3D
с новой осью в конце и использование np.unpackbits
вдоль той же -
np.unpackbits(a[...,None], axis=-1) # a is input array
Пробный прогон -
In [145]: np.random.seed(0)
In [146]: a = np.random.randint(0,256,(2,3),dtype=np.uint8)
In [147]: a
Out[147]:
array([[172, 10, 127],
[140, 47, 170]], dtype=uint8)
In [149]: out = np.unpackbits(a[...,None], axis=-1)
In [150]: out
Out[150]:
array([[[1, 0, 1, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1]],
[[1, 0, 0, 0, 1, 1, 0, 0],
[0, 0, 1, 0, 1, 1, 1, 1],
[1, 0, 1, 0, 1, 0, 1, 0]]], dtype=uint8)
Следовательно, out[...,0]
будет двоичным изображением с младшим значащим битом и т. Д. До тех пор, пока out[...,7]
не станет изображением с самым старшим битом.новая ось вдоль первой оси -
out = np.unpackbits(a[None], axis=0)
Следовательно, out[0]
будет двоичным изображением с младшим значащим битом и т. д. до out[7]
как изображением с самым старшим битом.