我在 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)
但问题是它们都是 True。如何制作相同的数组但元素应保持相同,这意味着在新数组中 False 应该是 False 并且 True 应该是 True。
您可以使用str.title
and将字符串转换为布尔文字ast.literal_eval
:
import ast
import numpy as np
li = ['FALSE', 'FALSE', 'TRUE', 'FALSE', 'FALSE', 'FALSE']
arr = np.array([ast.literal_eval(x.title()) for x in li])
# array([False, False, True, False, False, False], dtype=bool)
如果您的列表中只有这两个,您可以使用简单的列表理解:
arr = np.array([x=='TRUE' for x in li])
# array([False, False, True, False, False, False], dtype=bool)
请记住,非空字符串是true,因此像您一样将它们强制为 bool 将生成一个包含所有元素的数组True
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句