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