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

费利克斯

我的整数范围是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)等我选择了一个基本上是随机的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用xxd将整数转换为二进制

来自分类Dev

使用每个二进制数将二进制转换为数组

来自分类Dev

将整数转换为零填充的二进制字符串

来自分类Dev

Python 将二进制字符串转换为二进制整数

来自分类Dev

将int数组转换为二进制数组

来自分类Dev

将整数的numpy数组转换为12位二进制

来自分类Dev

将Django二进制字段转换为数组

来自分类Dev

将二进制数组转换为Char Java

来自分类Dev

C ++将二进制数组转换为类

来自分类Dev

使用'atoi()'将二进制字符串转换为整数

来自分类Dev

使用ctypes将Python二进制浮点数转换为整数

来自分类Dev

使用递归将整数转换为二进制数

来自分类Dev

使用老式方法将整数转换为二进制

来自分类Dev

使用JavaScript将二进制转换为文本

来自分类Dev

使用公式将文本转换为二进制

来自分类Dev

将包含二进制的整数列表转换为十六进制

来自分类Dev

将列表整数类型的二进制数转换为十进制数?

来自分类Dev

将包含二进制的整数列表转换为十六进制

来自分类Dev

将非整数十进制数字转换为二进制

来自分类Dev

将字符串二进制转换为整数十进制

来自分类Dev

将二进制字符串转换为布尔数组并输出二进制文件

来自分类Dev

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

来自分类Dev

在 Python 中将整数数组转换为二进制代码数组

来自分类Dev

使用array.reduce方法将二进制数字数组转换为十进制

来自分类Dev

将十六进制转换为二进制

来自分类Dev

将十六进制转换为二进制

来自分类Dev

将二进制转换为十六进制

来自分类Dev

将十六进制转换为二进制

来自分类Dev

将十六进制转换为二进制

Related 相关文章

热门标签

归档