numpy.unpackbits #

麻木的。unpackbits ( a , / , axis = None , count = None , bitorder = 'big' ) #

将 uint8 数组的元素解包为二进制值输出数组。

a的每个元素代表一个位字段,应将其解包到二进制值输出数组中。输出数组的形状要么是一维的(如果None),要么与输入数组的形状相同,并沿指定的轴进行解包。

参数
一个ndarray,uint8 类型

输入数组。

int,可选

完成位解包的维度。 None意味着解压扁平数组。

count int 或 None,可选

沿axis解包的元素数量,作为消除打包尺寸不是八的倍数的影响的一种方式。非负数意味着仅解包count 位。负数意味着从末尾修剪掉那么多位。None表示解压整个数组(默认)。大于可用位数的计数将向输出添加零填充。负计数不得超过可用位数。

1.17.0 版本中的新增功能。

位顺序{'big', 'little'},可选

返回位的顺序。 'big' 将模仿 bin(val), , 'little' 会将顺序反转为。默认为“大”。3 = 0b00000011 => [0, 0, 0, 0, 0, 0, 1, 1][1, 1, 0, 0, 0, 0, 0, 0]

1.17.0 版本中的新增功能。

返回
解压后的ndarray,uint8 类型

这些元素是二进制值(0 或 1)。

也可以看看

packbits

将二进制值数组的元素打包为 uint8 数组中的位。

例子

>>> a = np.array([[2], [7], [23]], dtype=np.uint8)
>>> a
array([[ 2],
       [ 7],
       [23]], dtype=uint8)
>>> b = np.unpackbits(a, axis=1)
>>> b
array([[0, 0, 0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 1, 1, 1],
       [0, 0, 0, 1, 0, 1, 1, 1]], dtype=uint8)
>>> c = np.unpackbits(a, axis=1, count=-3)
>>> c
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 1, 0]], dtype=uint8)
>>> p = np.packbits(b, axis=0)
>>> np.unpackbits(p, axis=0)
array([[0, 0, 0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 1, 1, 1],
       [0, 0, 0, 1, 0, 1, 1, 1],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)
>>> np.array_equal(b, np.unpackbits(p, axis=0, count=b.shape[0]))
True