numpy.unpackbits#
- numpy.unpackbits(a, /, axis=None, count=None, bitorder='big')#
将 uint8 数组的元素解包到二进制值输出数组中。
a 的每个元素表示一个位字段,应将其解包到二进制值输出数组中。输出数组的形状可以是一维(如果 axis 为
None
)或与输入数组的形状相同,并且沿指定的轴进行解包。- 参数:
- andarray,uint8 类型
输入数组。
- axisint,可选
执行位解包的维度。
None
表示解包扁平化数组。- countint 或 None,可选
沿 axis 解包的元素数量,作为撤销打包非 8 的倍数大小效果的一种方式。非负数表示仅解包 count 个比特。负数表示从末尾修剪掉这么多比特。
None
表示解包整个数组(默认值)。大于可用比特数的计数将向输出添加零填充。负计数不得超过可用比特数。版本 1.17.0 中的新功能。
- bitorder{‘big’, ‘little’},可选
返回比特的顺序。‘big’ 将模拟 bin(val),
3 = 0b00000011 => [0, 0, 0, 0, 0, 0, 1, 1]
,‘little’ 将反转顺序为[1, 1, 0, 0, 0, 0, 0, 0]
。默认为 ‘big’。版本 1.17.0 中的新功能。
- 返回值:
- unpackedndarray,uint8 类型
元素为二进制值(0 或 1)。
另请参阅
packbits
将二进制值数组的元素打包到 uint8 数组中的比特中。
示例
>>> import numpy as np >>> 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