Numpy packbits() 函数
NumPy packbits() 函数用于将二进制数组的元素打包成 uint8 数组的位。此函数将一个二进制值数组(即 0 和 1)压缩成一个 8 位无符号整数数组,其中生成的 uint8 数组中的每个位代表输入数组中的一个元素。
在此函数中,我们可以沿指定轴或扁平化的输入数组进行操作。它在处理大型二进制数据数组时,对于减少内存使用量特别有用。
语法
以下是 Numpy packbits() 函数的语法 -
numpy.packbits(a, /, axis=None, bitorder='big')
参数
以下是 Numpy packbits() 函数的参数 -
- a(array_like): 输入二进制值数组。
- axis: 此参数是打包位时所沿的轴。如果为 None,则数组将被展平。
- bitorder:打包表示中的位顺序,可以是"大"或"小"。
返回值
此函数返回一个 uint8 类型的数组,其中包含打包后的字节。
示例 1
以下是 Numpy packbits() 函数的基本示例,该函数将一维位数组打包成字节数组 -
import numpy as np # 定义输入的位数组(0 和 1) bits = np.array([1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1], dtype=np.uint8) # 将位打包成字节 packed = np.packbits(bits) print(packed)
以下是 packbits() 函数的输出 -
[178 229]
示例 2
在 NumPy 中沿默认轴打包二维数组需要将数组每行中的二进制值 0 和 1 转换为更紧凑的表示形式,例如字节。
packbits() 函数的默认轴为 -1,它指的是最后一个轴,通常是二维数组的列。以下是示例 -
import numpy as np
# 定义一个二维位数组
bit_array = np.array([[0, 1, 1, 0, 0, 1, 1, 1],
[1, 0, 1, 1, 0, 0, 0, 0]], dtype=np.uint8)
# 将位打包成字节
packed_array = np.packbits(bit_array)
print("原始位数组:
", bit_array)
print("打包后的数组:", packed_array)
以下是上述示例的输出 -
原始位数组: [[0 1 1 0 0 1 1 1] [1 0 1 1 0 0 0 0]] 打包后的数组:[103 176]
示例 3
以下示例展示了 packbits() 函数如何作用于三维数组 -
import numpy as np
# 创建三维数组
arr = np.array([[[1, 0, 1], [0, 1, 0]], [[1, 1, 0], [0, 0, 1]], [[1, 1, 0], [0, 0, 1]]])
# 显示数组
print("Array...")
print(arr)
# 获取数据类型
print("Array datatype...", arr.dtype)
# 获取数组的维度
print("数组维度...", arr.ndim)
# 获取数组的形状
print("我们的数组形状...", arr.shape)
# 获取数组元素的数量
print("数组中的元素...", arr.size)
# 要将二进制数组的元素打包成 uint8 数组的位,请使用 Python Numpy 中的 numpy.packbits() 方法。
# 通过在末尾插入零位,将结果填充为完整字节。
res = np.packbits(arr)
print("结果...", res)
以下是上述示例的输出 -
数组... [[[1 0 1] [0 1 0]] [[1 1 0] [0 0 1]] [[1 1 0] [0 0 1]]] 数组数据类型... int64 数组维度... 3 我们的数组形状... (3, 2, 3) 数组元素数... 18 结果... [171 28 64]

numpy_binary_operators.html