numpy.unpackbits 是 NumPy 中用于将整数类型的数组按位展开为 0 和 1 的二进制表示的函数。图像处理、比特操作、压缩数据解析,用于将字节展开为按位表示。bitmask 操作、二进制特征提取,可以快速将 uint8 数组变成 0-1 数组。网络协议解析、硬件数据模拟,比如 SPI/I2C 接收的字节数据处理。本文主要介绍一下NumPy中unpackbits方法的使用。

numpy.unpackbits

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

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

a的每个元素代表一个位域,应将其解压缩为二进制值输出数组。 输出数组的形状为1-D(如果轴为None)或与输入数组相同的形状,并且沿指定的轴进行unpacking。

参数 :

a :ndarray, uint8 type

输入数组。

axis :int, 可选

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

count :int 或 None, 可选

沿轴拆包的元素数,

作为消除包装尺寸不是八的倍数的效果的一种方式。 

非负数表示仅解包计数位。 

负数表示从末尾开始修剪掉很多位。

None表示解压缩整个数组(默认值)。

 大于可用位数的计数将为输出添加零填充。

 负计数不得超过可用位数。 1.17.0版中的新功能。

bit或der :{‘big’, ‘little’}, 可选

返回位的顺序。‘big’将会模拟 bin(val), 

3 = 0 b00000011 = >[0, 0, 0, 0, 0, 0, 1, 1],

‘little’ 将扭转为[1,1,0,0,0,0,0,0]

默认为‘big’。新版本1.17.0。

返回值 :

unpacked :ndarray, uint8 type

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

例子

1)基本用法

import numpy as np

a = np.array([2], dtype=np.uint8)
bits = np.unpackbits(a)
print(bits)

2)多个元素

import numpy as np

a = np.array([2, 7], dtype=np.uint8)
bits = np.unpackbits(a)
print(bits)

3)使用 bitorder='little'

import numpy as np

a = np.array([2], dtype=np.uint8)
bits = np.unpackbits(a, bitorder='little')
print(bits)

4)带 axis 参数的二维数组

import numpy as np

a = np.array([[2], [7]], dtype=np.uint8)
bits = np.unpackbits(a, axis=1)
print(bits)

5)指定 count 参数(截断或补零)

import numpy as np

# 二进制 11111111
a = np.array([255], dtype=np.uint8)  
# 只取前4位
bits = np.unpackbits(a, count=4)     
print(bits)

推荐文档

相关文档

大家感兴趣的内容

随机列表