numpy整数的布尔数组表示

时间:2016-06-01 23:14:30

标签: python numpy

生成整数的numpy布尔数组表示的最简单方法是什么?例如,将6映射到np.array([False, True, True], dtype=np.bool)

4 个答案:

答案 0 :(得分:3)

如果match_parent是整数,则表达式n将创建一个表示位的布尔数组,其中最低位在第一个位置。

例如,

(n & (1 << np.arange(int(floor(log(n, 2) + 1))))) > 0

答案 1 :(得分:2)

首先,使用np.binary_repr获取整数值的二进制表示。请记住在这里指定您想要的位数组的位宽。我已经提供了一种方法来以编程方式确定表示给定整数所需的位数:

>>> n = 5
>>> bin_n = bin(n)
'0b101'
>>> smallest_length = n.bit_length()
3
>>> bin_array = np.binary_repr(5, width=smallest_length)
bin_array = '101'

然后,反转输出二进制字符串中的位的顺序:

>> reversed_bin_array[::-1]
reversed_bin_array = '101'

然后,最后要获得具有较早指定的位宽的位数组,请使用bitarray。我发现bitarray对象是一种非常有用的方法,可以方便地存储和操作位数组:

>>> bitarray('11110010') # from a string

我希望这有帮助,快乐编码!

答案 2 :(得分:2)

以下是使用np.binary_reprnp.fromstring -

的方法
np.fromstring(np.binary_repr(num), dtype=np.uint8)==49

示例运行 -

In [39]: num
Out[39]: 17

In [40]: np.fromstring(np.binary_repr(num), dtype=np.uint8)==49
Out[40]: array([ True, False, False, False,  True], dtype=bool)

答案 3 :(得分:1)

也许这不是最简单的,但紧凑的方式是

from numpy import array array([i for i in bin(5)[2:]]) == '1'