[Solved] Converting integer array to binary array in python

I am trying to convert an array with integers to binary, using python 2.7.

A simplified version of my code is the following:

 #!/usr/bin/python
 import numpy as np

 a=np.array([6,1,5,0,2])
 b=np.array(np.zeros((5)))

for i in range(10):
    b[i]=bin(int(a[i])).zfill(8)

The code gives me the error message:

b[i]=bin(int(a[i])).zfill(8)
ValueError: invalid literal for float(): 0000b110

What is wrong with my code?
Is there another way to do this?
The original code is part of a much greater project with 2 dimensional arrays.

p.s I’m a relative novice to Python

Solution #1:

Numpy attempts to convert your binary number to a float, except that your number contains a b which can’t be interpreted; this character was added by the bin function, eg. bin(2) is 0b10. You should remove this b character before your zfill like this by using a “slice” to remove the first 2 characters:

b[i]=bin(int(a[i]))[2:].zfill(8)

Solution #2:

bin will create a string that starts with 0b indicating that it is a binary representation. If you only want the binary representation you have to slice the first two characters before you call zfill.

Instead of doing this, you could use format like so

b[i] = '{:08b}'.format(a[i])

Basically, this will print the binary representation of a[i] padded with 0 until it has length 8.

See the Format Specification Mini-Language for further details.

Respondent: AlexV

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Leave a Reply

Your email address will not be published.