NumPy unpackbits() 函数



NumPy 的unpackbits()函数用于将uint8数组的元素解包到一个二值输出数组中。它将输入数组中的每个字节(8位)转换为其对应的二进制表示,从而生成一个位数组。

此函数可用于将打包的二进制数据扩展回位级表示。解包过程可以在指定的轴上执行,并且位顺序可以默认为“big”或通过确定最高有效位或最低有效位是否排在前面来设置为“little”端序。

语法

以下是 NumPy unpackbits() 函数的语法:

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

参数

以下是 NumPy unpackbits() 函数的参数:

  • a (array_like): 类型为 uint8 的输入数组。
  • axis (int, 可选): 解包位的轴。如果为 None,则在解包之前将输入数组展平。
  • count (int 或 None, 可选): 要解包的位数。必须是 8 的倍数。如果为 None,则解包所有位。
  • bitorder ({'big', 'little'}, 可选): 打包表示中位的顺序。“big”表示最高有效位在前,“little”表示最低有效位在前。默认值为“big”。

返回值

此函数返回一个数组,其中每个元素都被解包成其组成位。返回的数组的 dtype 为 uint8。

示例 1

以下是 NumPy unpackbits() 函数的基本示例,其中将打包的二进制数据(即字节)转换为位数组,这对于位级运算或分析很有用:

import numpy as np

# Define a 1D array of uint8 values (bytes)
byte_array = np.array([0b10101010, 0b11001100], dtype=np.uint8)

# Unpack the bytes into individual bits
unpacked_array = np.unpackbits(byte_array)

print("Original byte array:", byte_array)
print("Unpacked array of bits:", unpacked_array)  

以下是 unpackbits() 函数的输出:

Original byte array: [170 204]
Unpacked array of bits: [1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0]

示例 2

我们可以使用 unpackbits() 将 uint8 值的二维数组沿最后一个轴解包成单个位。以下示例显示了沿轴解包二维数组:

import numpy as np

# Define a 2D array of uint8 values (bytes)
byte_array_2d = np.array([[0b10101010, 0b11001100], [0b11110000, 0b00001111]], dtype=np.uint8)

# Unpack the bytes into individual bits along the last axis (axis=1)
unpacked_array = np.unpackbits(byte_array_2d, axis=1)

print("Original 2D byte array:")
print(byte_array_2d)
print("\nUnpacked array of bits along the last axis:")
print(unpacked_array)

以下是上述示例的输出:

Original 2D byte array:
[[170 204]
 [240  15]]

Unpacked array of bits along the last axis:
[[1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0]
 [1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1]]
numpy_binary_operators.htm
广告