numpy.unpackbits

numpy.unpackbits(a, axis=None, count=None, bitorder='big')

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

每个元素 a 表示应解包到二进制值输出数组中的位字段。输出数组的形状为一维(如果 axisNone )或与输入数组相同的形状,并沿指定的轴进行解包。

参数
aNdarray,uint8型

输入数组。

axis可选的

完成钻头开箱的尺寸。 None 意味着展开扁平数组。

countint或none,可选

要拆包的元素数 axis ,用于消除包装尺寸不是8的倍数的影响。非负数表示只打开包装 count 位。一个负数意味着从末尾删去那么多的位。 None 表示解压缩整个阵列(默认值)。大于可用位数的计数将为输出添加零填充。负数不得超过可用位数。

1.17.0 新版功能.

bitorder{big',little},可选

返回位的顺序“大”将模仿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数组中的位。

实例

>>> 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