numpy.unpackbits#
- numpy.unpackbits(a, /, axis=None, count=None, bitorder='big')#
將 uint8 陣列的元素解包成二進位值的輸出陣列。
a 的每個元素代表一個位元欄位,應解包成二進位值的輸出陣列。輸出陣列的形狀為 1 維(如果 axis 為
None
)或與輸入陣列相同的形狀,並沿著指定的軸進行解包。- 參數:
- 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