In native python

In numpy

  • packbits: pack binary data into integer (np.uint8) by byte
import numpy as np
X = np.random.randint(low=0,high=2,size=(1000,32)) # generate some binary data
X_packed8 = np.packbits(X,axis=1) # pack every 8 bit by axis 1
# X_packed8.shape
# (1000, 4)
X_packed32 = X_packed8.view(np.uint32)
# X_packed32.shape
# (1000, 1)
  • tobyte: save numpy data to byte string
x = np.array([0,1,2,4,8,16,32,64,128,256,512,1024],dtype=np.int16)
x.tobytes()
# b'\x00\x00\x01\x00\x02\x00\x04\x00\x08\x00\x10\x00 \x00@\x00\x80\x00\x00\x01\x00\x02\x00\x04'