生成整数的numpy布尔数组表示的最简单方法是什么?例如,将6
映射到np.array([False, True, True], dtype=np.bool)
。
答案 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_repr
和np.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'