将python列表转换为numpy数组布尔值
我有一个类似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
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)