flopscope.numpy.packbits
fnp.packbits(a, *args, **kwargs)[flopscope source]
Packs the elements of a binary-valued array into bits in a uint8 array.
Adapted from NumPy docs np.packbits
Pack elements of array into bits. Cost: numel(input).
The result is padded to full bytes by inserting zero bits at the end.
Parameters
- a:array_like
An array of integers or booleans whose elements should be packed to bits.
- axis:int, optional
The dimension over which bit-packing is done.
Noneimplies packing the flattened array.- bitorder:{'big', 'little'}, optional
The order of the input bits. 'big' will mimic bin(val),
[0, 0, 0, 0, 0, 0, 1, 1] => 3 = 0b00000011, 'little' will reverse the order so[1, 1, 0, 0, 0, 0, 0, 0] => 3. Defaults to 'big'.
Returns
- packed:ndarray
Array of type uint8 whose elements represent bits corresponding to the logical (0 or nonzero) value of the input elements. The shape of
packedhas the same number of dimensions as the input (unlessaxisis None, in which case the output is 1-D).
See also
- we.flops.unpackbits Unpacks elements of a uint8 array into a binary-valued output array.
Examples
>>> import flopscope.numpy as fnp
>>> a = flops.array([[[1,0,1],
... [0,1,0]],
... [[1,1,0],
... [0,0,1]]])
>>> b = flops.packbits(a, axis=-1)
>>> b
array([[[160],
[ 64]],
[[192],
[ 32]]], dtype=uint8)Note that in binary 160 = 1010 0000, 64 = 0100 0000, 192 = 1100 0000, and 32 = 0010 0000.