将python列表转换为numpy数组布尔值

将python列表转换为numpy数组布尔值,python,arrays,numpy,Python,Arrays,Numpy,我有一个类似python的大列表小示例,我想制作一个布尔型的numpy数组 小例子: li = ['FALSE', 'FALSE', 'TRUE', 'FALSE', 'FALSE', 'FALSE'] I tried to change it using the following line: out = array(li, dtype = bool) 然后我得到了这个输出: out = array([ True, True, True, True, True, True], dtype

我有一个类似python的大列表小示例,我想制作一个布尔型的numpy数组

小例子:

li = ['FALSE', 'FALSE', 'TRUE', 'FALSE', 'FALSE', 'FALSE']

I tried to change it using the following line:

out = array(li, dtype = bool)
然后我得到了这个输出:

out = array([ True, True, True, True, True, True], dtype=bool)
但问题是它们都是真的。如何创建相同的数组,但元素应保持不变,这意味着在新数组中False应为False,True应为True。

bool('True')
bool('False')
始终返回True,因为字符串
'True'
'False'
不是空的

您可以创建一个函数,将
字符串
转换为
bool

def string_to_bool(string):
    if string == 'True':
        return True
    elif string == 'False':
        return False
>>> string_to_bool('True')
True

您可以使用
str.title
和以下命令将字符串转换为布尔文字:

如果列表中只有以下两项内容,则可以使用简单的列表理解:

arr = np.array([x=='TRUE' for x in li])
# array([False, False,  True, False, False, False], dtype=bool)

请记住,非空字符串是真实的,因此像您那样将它们强制为bool将生成一个所有元素都为
True

的数组,那么获得我想要的输出的解决方案是什么
elif s
应该是
elif string
也要与OPs数据兼容,比较应该是
'TRUE'
'FALSE'
arr = np.array([x=='TRUE' for x in li])
# array([False, False,  True, False, False, False], dtype=bool)