我有一个角色。我想把它的ascii值表示为一个庞大的布尔数组。 这有效,但似乎扭曲了。还有更好的方法吗?
bin_str = bin(ord(mychar))
bool_array = array([int(x)>0 for x in list(bin_str[2:])], dtype=bool)
代表
mychar = 'd'
bool_array的期望结果值是
array([ True, True, False, False, True, False, False], dtype=bool)
答案 0 :(得分:1)
您可以使用np.unpackbits
直接从uint8数组中提取位:
np.unpackbits(np.array(ord(mychar), dtype=np.uint8))
编辑:仅获取布尔数组中的7个相关位:
np.unpackbits(np.array(ord(mychar), dtype=np.uint8)).astype(bool)[1:]
答案 1 :(得分:0)
这或多或少是一回事:
>>> import numpy as np
>>> mychar = 'd'
>>> np.array(list(np.binary_repr(ord(mychar), width=4))).astype('bool')
array([ True, True, False, False, True, False, False], dtype=bool)
是否减少了扭曲?