Home > Software engineering >  Numpy unpackbits type error when trying to convert bytes to bits
Numpy unpackbits type error when trying to convert bytes to bits

Time:01-27

To get bits from bytes:

bytes = bytes([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
bits = numpy.unpackbits(bytes)  

throws this error:
TypeError: Expected an input array of unsigned byte data type
but if I get bytes in this way it works:

bytes = numpy.fromfile(filename, dtype="uint8")

How to solve this error, thanks.

CodePudding user response:

You have to pass an array with a dtype of unsigned integer:

hex_codes = 0x13, 0x00, 0x00, 0x00, 0x08, 0x00
arr = np.array(hex_codes).astype(np.uint8)
np.unpackbits(arr)

Output:

array([0, 0, 0, 1, 1, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0], dtype=uint8)

Btw, you probably know this, but you should not reassign a builtin as you did with bytes.

CodePudding user response:

bytes should be unsigned array, why not use a numpy unsigned?

bytearray = numpy.array([0x13, 0x00, 0x00, 0x00, 0x08, 0x00],dtype=numpy.uint8)
bits = numpy.unpackbits(bytearray)  
  •  Tags:  
  • Related