我正在尝试使用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的相对新手
答案 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。