在 Numpy 中解包 uint8 数组元素并从末尾移除相应数量的位

numpyserver side programmingprogramming更新于 2025/9/24 19:07:17

要将 uint8 数组元素解包为二进制值输出数组,请使用 Python Numpy 中的 numpy.unpackbits() 方法。结果为二进制值(0 或 1)。axis 是进行位解包的维度。axis 使用"axis"参数设置。要设置要解包的元素数量,请使用"count"参数。

输入数组的每个元素代表一个位域,应将其解包为二进制值输出数组。输出数组的形状为一维(如果 axis 为 None),或者与输入数组形状相同,但沿指定的 axis 进行解包。

axis 是进行位解包的维度。"None"表示对扁平化数组进行解包。 count 参数是沿轴解包的元素数量,用于消除打包非八倍数大小的影响。非负数表示仅解包 count 个位。负数表示从末尾去掉相应数量的位。None 表示解包整个数组(默认值)。大于可用位数的计数将在输出中添加零填充。负数计数不得超过可用位数。

顺序是返回位的顺序。"big"将模拟 bin(val), 3 = 0b00000011 ⇒ [0, 0, 0, 0, 0, 0, 1, 1],"little"将反转顺序为 [1, 1, 0, 0, 0, 0, 0, 0]。默认为"big"。

步骤

首先,导入所需的库 −

import numpy as np

创建一个二维数组。我们使用"dtype"参数设置了 uint8 类型 −

arr = np.array([[4, 8], [6, 19], [27, 35]], dtype=np.uint8)

显示我们的数组 −

print("数组...
",arr)

获取数据类型 −

print("
数组数据类型...
",arr.dtype)

获取数组的维度 −

print("
数组维度...
",arr.ndim)

获取数组的形状 −

print("
我们的数组形状...
",arr.shape)

获取数组元素的数量 −

print("
数组中的元素...
",arr.size)

要将 uint8 数组的元素解包为二进制值输出数组,请使用 numpy.unpackbits() 方法。要设置要解包的元素数量,请使用"count"参数。负数表示从末尾截掉该数量的位。我们将 count 设置为 -4,这意味着我们将从末尾截掉 4 位。 −

res = np.unpackbits(arr, axis = 1, count = -4)
print("
结果...
",res)

示例

import numpy as np

# 创建二维数组

# 我们使用"dtype"参数设置了 uint8 类型
arr = np.array([[4, 8], [6, 19], [27, 35]], dtype=np.uint8)

# 显示我们的数组
print("数组...
",arr) # 获取数据类型 print("
数组数据类型...
",arr.dtype) # 获取数组的维度 print("
数组维度...
",arr.ndim) # 获取数组的形状 print("
我们的数组形状...
",arr.shape) # 获取数组元素的数量 print("
数组中的元素...
",arr.size) # 要将 uint8 数组的元素解包为二进制值输出数组,请使用 Python Numpy 中的 numpy.unpackbits() 方法。 # 结果为二进制值(0 或 1)。 # 轴是进行位解包的维度。 # 使用"axis"参数设置轴。 # 要设置要解包的元素数量,请使用"count"参数。 # 负数表示从末尾截掉该数量的位。 # 我们将 count 设置为 -4,这意味着我们将从末尾截掉 4 位。 res = np.unpackbits(arr, axis = 1, count = -4) print("
结果...
",res)

输出

数组...
[[ 4 8]
[ 6 19]
[27 35]]

数组数据类型...
uint8

数组维度...
2

我们的数组形状...
(3, 2)

数组中的元素...
6

结果...
[[0 0 0 0 0 1 0 0 0 0 0 0]
[0 0 0 0 0 1 1 0 0 0 0 1]
[0 0 0 1 1 0 1 1 0 0 1 0]]

相关文章