numpy.unpackbits#

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

將 uint8 陣列的元素解包成二進位值的輸出陣列。

a 的每個元素代表一個位元欄位,應解包成二進位值的輸出陣列。輸出陣列的形狀為 1 維(如果 axisNone)或與輸入陣列相同的形狀,並沿著指定的軸進行解包。

參數:
andarray,uint8 型別

輸入陣列。

axisint,選填

進行位元解包的維度。None 表示解包扁平化的陣列。

countint 或 None,選填

沿著 axis 要解包的元素數量,作為還原封裝大小不是八的倍數的效果的方法。非負數表示僅解包 count 位元。負數表示從末端修剪掉那麼多位元。None 表示解包整個陣列(預設值)。計數大於可用位元數將在輸出中添加零填充。負數計數不得超過可用位元數。

bitorder{‘big’, ‘little’},選填

傳回位元的順序。 ‘big’ 將模仿 bin(val),3 = 0b00000011 => [0, 0, 0, 0, 0, 0, 1, 1],‘little’ 將順序反轉為 [1, 1, 0, 0, 0, 0, 0, 0]。預設為 ‘big’。

傳回值:
unpackedndarray,uint8 型別

元素是二進位值(0 或 1)。

另請參閱

packbits

將二進位值陣列的元素封裝到 uint8 陣列中的位元。

範例

>>> import numpy as np
>>> a = np.array([[2], [7], [23]], dtype=np.uint8)
>>> a
array([[ 2],
       [ 7],
       [23]], dtype=uint8)
>>> b = np.unpackbits(a, axis=1)
>>> b
array([[0, 0, 0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 1, 1, 1],
       [0, 0, 0, 1, 0, 1, 1, 1]], dtype=uint8)
>>> c = np.unpackbits(a, axis=1, count=-3)
>>> c
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 1, 0]], dtype=uint8)
>>> p = np.packbits(b, axis=0)
>>> np.unpackbits(p, axis=0)
array([[0, 0, 0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 1, 1, 1],
       [0, 0, 0, 1, 0, 1, 1, 1],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)
>>> np.array_equal(b, np.unpackbits(p, axis=0, count=b.shape[0]))
True