Python 将十进制数转换为布尔数组
在Python3.8中,我希望获取一个始终介于0和8之间的整数,并将其转换为一个数组,每个二进制数字都有一个布尔表示。我想出了一个办法,但我觉得这是一个相当迂回的方式来得到我想要的:Python 将十进制数转换为布尔数组,python,python-3.x,list,Python,Python 3.x,List,在Python3.8中,我希望获取一个始终介于0和8之间的整数,并将其转换为一个数组,每个二进制数字都有一个布尔表示。我想出了一个办法,但我觉得这是一个相当迂回的方式来得到我想要的: import numpy as np curInput = 5 myArray = np.array(list(map(int, list(f"{curInput:08b}"))),dtype='bool').tolist() 上面创建了[False,False,False,False,Fa
import numpy as np
curInput = 5
myArray = np.array(list(map(int, list(f"{curInput:08b}"))),dtype='bool').tolist()
上面创建了[False,False,False,False,False,True,False,True],这正是我需要的。我需要数组的大小始终为8,但它确实感觉太复杂了。一次性创建一个数组
bits = np.array([128, 64, 32, 16, 8, 4, 2, 1])
之后
(bits & value) != 0
将为您提供任何值所需的数组。一次性创建一个数组
bits = np.array([128, 64, 32, 16, 8, 4, 2, 1])
之后
(bits & value) != 0
将为您提供任何值所需的数组。[bit==1表示f{curInput:08b}中的位]?获取布尔值不需要往返于numpy数组。这是一种正确的方法,无需转换为字符串并返回,也无需使用numpy:[boolcurInput&1@zvone字符串的出现时间要快得多。问题是映射到int。只需直接映射到布尔值。listmaplambda x:x==1,f{curInput:08b},这与jon的list comp相同。f字符串的额外强制转换也不是必需的-duck键入FTW!@jornsharpe我实际上想知道这是否可能是真的。感谢共享该信息:[bit==1表示f{curInput:08b}中的位]?获取布尔值不需要往返于numpy数组。这是一种正确的方法,无需转换为字符串并返回,也无需使用numpy:[boolcurInput&1@zvone字符串的出现时间要快得多。问题是映射到int。只需直接映射到布尔值。listmaplambda x:x==1,f{curInput:08b},这与jon的list comp完全相同。f字符串的额外强制转换也不是必需的-duck键入FTW!@jornsharpe我实际上想知道这是否可能是真的。感谢分享这些信息:bits=1@zvone是的。键入整数比确保所有括号都正确更快。这是原始的poster需要16位,我会这样做的。bits=1@zvone是的。键入整数比确保所有括号都正确更快。如果需要16位,我会这样做。