在python中将整数数组转换为二进制数组

时间:2016-03-21 17:58:22

标签: python arrays binary

我正在尝试使用python 2.7将带有整数的数组转换为二进制。

我的代码的简化版本如下:

 #!/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)

代码给出了错误消息:

B [I] =仓(INT(A [1]))。zfill(8) ValueError:float()的文字无效:0000b110

我的代码出了什么问题? 还有另一种方法吗? 原始代码是具有二维数组的更大项目的一部分。

p.s我是Python的相对新手

2 个答案:

答案 0 :(得分:1)

Numpy尝试将您的二进制数转换为float,但您的号码包含无法解释的b;此字符由bin函数添加,例如。 bin(2)0b10。您应该在b之前删除此zfill字符,方法是使用“切片”删除前2个字符:

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

答案 1 :(得分:1)

bin将创建一个以0b开头的字符串,表示它是二进制表示。如果您只想要二进制表示,则必须在调用zfill之前对前两个字符进行切片。

您可以使用format,而不是这样做

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

基本上,这将打印a[i]填充0的二进制表示,直到其长度为8。

有关详细信息,请参阅Format Specification Mini-Language