当前位置: 首页 > 面试题库 >

使用适当的填充将整数转换为二进制数组

周朗
2023-03-14
问题内容

我的整数范围是0..2**m - 1,我想将它们转换为length的二进制numpy数组m。例如,说m = 4。现在15 =1111为二进制,因此输出应为(1,1,1,1)2 = 10以二进制形式,因此输出应为(0,0,1,0)。如果m32应该转换(0,1,0)

我试过了,np.unpackbits(np.uint8(num))但是没有给出正确长度的数组。例如,

np.unpackbits(np.uint8(15))
Out[5]: array([0, 0, 0, 0, 1, 1, 1, 1], dtype=uint8)

我想要一种适用m于代码中所有内容的方法。


问题答案:

您应该能够对此进行矢量化处理,例如

>>> d = np.array([1,2,3,4,5])
>>> m = 8
>>> (((d[:,None] & (1 << np.arange(m)))) > 0).astype(int)
array([[1, 0, 0, 0, 0, 0, 0, 0],
       [0, 1, 0, 0, 0, 0, 0, 0],
       [1, 1, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 0, 0, 0],
       [1, 0, 1, 0, 0, 0, 0, 0]])

它只是获得适当的位权重,然后按位取和:

>>> (1 << np.arange(m))
array([  1,   2,   4,   8,  16,  32,  64, 128])
>>> d[:,None] & (1 << np.arange(m))
array([[1, 0, 0, 0, 0, 0, 0, 0],
       [0, 2, 0, 0, 0, 0, 0, 0],
       [1, 2, 0, 0, 0, 0, 0, 0],
       [0, 0, 4, 0, 0, 0, 0, 0],
       [1, 0, 4, 0, 0, 0, 0, 0]])

有很多方法将其转换为1秒无论它是非零的(> 0)*1.astype(bool).astype(int)等我选择了一个基本上是随机的。



 类似资料:
  • 问题内容: 当将int转换为二进制时,如何将其输出为8个字符,当前仅显示1且缺少7个零 码 示例输出到0000 0001 问题答案: 我不确定这是否是您的意思,但是类似 会产生

  • 问题内容: 为了将整数转换为二进制,我使用了以下代码: 什么时候擦除“ 0b”,我用这个: 我能做些什么,如果我想展现的,而不是? 问题答案: 仅说明格式化字符串的部分: 将变量放入字符串 将变量放在参数位置0 为该变量添加格式设置选项(否则它将代表小数) 将数字格式化为左侧零填充的八位数字 将数字转换为其二进制表示形式 如果您使用的是Python 3.6或更高版本,则还可以使用f字符串:

  • 此函数接收一个整数作为参数,并应返回一个列表,该列表表示与二进制表示的值相同的位列表,其中列表中的第一个元素是最有效(最左边)的位。 我的函数当前输出数字11的,我需要来代替。 例如,

  • 问题内容: 我正在尝试将一个数字从一个整数转换为另一个整数,如果以十六进制打印,它将看起来与原始整数相同。 例如: 将20转换为32(即0x20) 将54转换为84(即0x54) 问题答案: 即,将原始数字视为十六进制,然后将其转换为十进制。

  • 据我所知,这不是一个重复的问题。我将在下面列出相关但不同的问题。 下面是我试图运行的代码,将一个int数组转换为二进制,作为一个单一的矢量化操作: ...嗯...我实际上是在一个“整数标量数组”上操作。(并且将更改为类似于没有效果。) 我意识到可以通过循环(Python 2问题)或列表理解来做到这一点(我知道产生字符串),所以...这篇文章更多的是一个问题:为什么我不能作为一个单一的矢量化操作来做

  • 问题内容: HTML5使您可以在本地存储数据,我认为这很好。例如,这是如何使用它: 在html中,您可以通过将图片的源设置为以下内容来动态显示图片: 所以我的问题是 如何将二进制数据转换为base64字符串,以便可以利用html5本地存储? 例如,如果我可以: 我知道我可以通过使用html5将图像包装在画布上并将其转换为base64string来解决此问题。我也可以在服务器上进行特定的服务,该服务