numpy.packbits#

numpy.packbits(a, /, axis=None, bitorder='big')#

将二值数组的元素打包成 uint8 数组中的位.

结果通过在末尾插入零位填充到完整字节.

参数:
aarray_like

一个由整数或布尔值组成的数组,其元素应打包为位.

axisint, 可选

进行位打包的维度.``None`` 表示打包展平后的数组.

bitorder{‘big’, ‘little’}, 可选

输入位的顺序.’big’ 将模仿 bin(val),``[0, 0, 0, 0, 0, 0, 1, 1] => 3 = 0b00000011``,’little’ 将反转顺序,所以 [1, 1, 0, 0, 0, 0, 0, 0] => 3.默认为 ‘big’.

在 1.17.0 版本加入.

返回:
packedndarray

类型为 uint8 的数组,其元素表示对应于输入元素的逻辑(0 或非零)值的位.`packed` 的形状与输入具有相同数量的维度(除非 axis 为 None,在这种情况下输出是 1-D).

参见

unpackbits

将一个 uint8 数组的元素解包成一个二进制值的输出数组.

示例

>>> import numpy as np
>>> 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)

请注意,在二进制中 160 = 1010 0000, 64 = 0100 0000, 192 = 1100 0000, 和 32 = 0010 0000.