[Numpy-discussion] unpacking data values into array of bits

R Schumacher rays at blue-cove.com
Thu Feb 12 10:55:50 EST 2015


At 07:45 AM 2/12/2015, you wrote:
>Robert Kern wrote:
> > def tobeckerbits(x):
> >     return np.unpackbits(np.frombuffer(np.asarray(x),
> > dtype=np.uint8)).astype(np.int32)
> >
> > def frombeckerbits(bits, dtype):
> >     return np.frombuffer(np.packbits(bits), dtype=dtype)[0]
> >
> > --
> > Robert Kern
>
>Nice!  Also seems to work for arrays of values:

It's also fastest, with most pushed to numpy:

 >>> s='np.unpackbits(np.frombuffer(np.asarray(np.pi), 
dtype=np.uint8)).astype(np.int32)'
 >>> timr(s)
0.000252470827292
 >>> s="np.array([b for b in 
bin(struct.unpack('!i',struct.pack('!f',1.0))[0])[2:]], 'int32')"
 >>> timr(s)
0.000513665240078
 >>> s="np.unpackbits (np.array (memoryview(struct.pack ('d', 
np.pi)))).astype(np.int32)"
 >>> timr(s)
0.000466455247988
 >>> s="np.array([b for b in np.binary_repr(314159)], 'int32')"
 >>> timr(s)
0.000423350472602






More information about the NumPy-Discussion mailing list