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
廣告