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

4

2 Answers

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)

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest