【问题标题】:Converting integer array to binary array in python在python中将整数数组转换为二进制数组
【发布时间】:2016-07-08 09:29:01
【问题描述】:

我正在尝试使用 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]=bin(int(a[i])).zfill(8)
ValueError: invalid literal for float(): 0000b110

我的代码有什么问题? 还有另一种方法可以做到这一点吗? 原始代码是一个更大的二维数组项目的一部分。

p.s 我是 Python 的新手

【问题讨论】:

  • ValueError 来自于您创建了一个意外的怪物。 bin(6) 是'0b110',您需要在用0 填充之前去掉0b 部分。错误消息从字面上指出0000b110 有问题。另外,为什么你的数组大小为 5 而你却是for i in range(10):
  • 感谢大家的快速回复!
  • 数组 (10) 的大小被意外设置。在原始代码中是正确的。

标签: python arrays binary


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2012-05-11
      相关资源
      最近更新 更多