📜  Python中的 numpy.packbits()(1)

📅  最后修改于: 2023-12-03 15:04:33.568000             🧑  作者: Mango

Python中的numpy.packbits()

numpy.packbits()是一种函数,它将布尔数组转换为整数,其中布尔数组中的每个8个元素被压缩为一个8位整数。这样可以在内存中节省空间。这个函数是numpy中的函数,需要导入numpy包才能使用。

语法
numpy.packbits(bool_array, axis=None, bitorder='big')

参数说明:

  • bool_array:布尔类型的Numpy数组,要压缩的数组
  • axis:默认值为None,指定沿哪个轴进行压缩。指定轴为1时,布尔数组的每一行都被逐行压缩,并且要求axis为None或1。
  • bitorder:默认为big,指定生成的整数的结束顺序。如果设置为‘little’,则最后一个字节对应于第一位。
返回值

返回压缩后的整数数组。

示例
import numpy as np

bool_arr = np.array([[True,False], [False, True]])
compressed = np.packbits(bool_arr, axis=1)
print(compressed)

# output
# array([[128],
#        [  2]], dtype=uint8)

在上面的示例中:

  • numpy的数据类型numpy.uint8用来表示整数。每个压缩后的元素占用8位。在我们的示例中,每个压缩后的元素都是一个字节长,因此它们都被表示为numpy.uint8。
  • 压缩 complete Boolean array,使其逐行压缩。
  • 结果输出“[[128], [2]]”。这意味着元素长为8比特的第1个值为1,第2 ~ 8个比特为0。第二个元素的第1个 ~ 2个二进制位为0,第3位为1,其余的为0。
注意事项
  • 如果bool数组比较小,那么使用packbits可以减少内存的使用量,但是如果数组较大,则可能事实上增加内存使用量。
  • bool数组压缩与整数解压缩之间的转换可能需要额外的时间。
  • 在将布尔数组转换为整数时,该函数对每8个元素进行一次布尔运算,因此该函数非常快。