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: 打包表示中的位顺序,可以是“big”或“little”。

返回值

此函数返回一个包含打包字节的uint8类型数组。

示例 1

以下是 Numpy packbits() 函数的基本示例,其中将 1D 位数组打包到字节数组中:

import numpy as np

# Define the input array of bits (0s and 1s)
bits = np.array([1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1], dtype=np.uint8)

# Pack the bits into bytes
packed = np.packbits(bits)
print(packed)    

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

[178 229]

示例 2

在 NumPy 中沿默认轴打包 2D 数组涉及将数组每行中的二进制值 0 和 1 转换为更紧凑的表示形式,例如字节。

packbits()函数的默认轴为 -1,它指的是最后一个轴,对于 2D 数组通常是列。以下是一个示例:

import numpy as np

# Define a 2D array of bits
bit_array = np.array([[0, 1, 1, 0, 0, 1, 1, 1], 
                      [1, 0, 1, 1, 0, 0, 0, 0]], dtype=np.uint8)

# Pack the bits into bytes
packed_array = np.packbits(bit_array)

print("Original bit array:\n", bit_array)
print("Packed array:", packed_array)

以下是上述示例的输出:

Original bit array:
 [[0 1 1 0 0 1 1 1]
 [1 0 1 1 0 0 0 0]]
Packed array: [103 176]

示例 3

以下示例显示了packbits()函数如何在 3D 数组上工作:

import numpy as np

# Create a 3D array
arr = np.array([[[1, 0, 1], [0, 1, 0]], [[1, 1, 0], [0, 0, 1]], [[1, 1, 0], [0, 0, 1]]])

# Displaying our array
print("Array...")
print(arr)

# Get the datatype
print("Array datatype...", arr.dtype)

# Get the dimensions of the Array
print("Array Dimensions...", arr.ndim)

# Get the shape of the Array
print("Our Array Shape...", arr.shape)

# Get the number of elements of the Array
print("Elements in the Array...", arr.size)

# To pack the elements of a binary-valued array into bits in a uint8 array, use the numpy.packbits() method in Python Numpy
# The result is padded to full bytes by inserting zero bits at the end
res = np.packbits(arr)
print("Result...", res)  

以下是上述示例的输出:

Array...
[[[1 0 1]
  [0 1 0]]

 [[1 1 0]
  [0 0 1]]

 [[1 1 0]
  [0 0 1]]]
Array datatype... int64
Array Dimensions... 3
Our Array Shape... (3, 2, 3)
Elements in the Array... 18
Result... [171  28  64]
numpy_binary_operators.htm
广告