numpy.unpackbits#
- numpy.unpackbits(a, /, axis=None, count=None, bitorder='big')#
将 uint8 数组的元素解包到二进制值的输出数组中.
a 的每个元素代表一个位字段,应将其解包到二进制值的输出数组中.输出数组的形状是1-D(如果 axis 为
None)或与输入数组相同的形状,并沿指定的轴完成解包.- 参数:
- andarray, uint8 类型
输入数组.
- axis整数,可选
在其上进行位解包的维度.
None表示解包展平的数组.- 计数int 或 None,可选
沿 axis 解包的元素数,提供了一种撤消大小不是8的倍数的打包效果的方法.非负数表示仅解包 count 位.负数表示从末尾删除这么多位.
None表示解包整个数组(默认值).大于可用位数的计数将在输出中添加零填充.负数计数不得超过可用位数.- 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”.
- 返回:
- 解包ndarray, 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