无论输入值是什么,np.genfromtxt
都将始终返回False
。
使用dtype='u1'
我按预期得到'1'。但是dtype='b1'
(Numpy的布尔)我得到'假'。
答案 0 :(得分:4)
我不知道这是不是一个bug,但到目前为止,只有当文件包含文字字符串'False时,我才能使dtype=bool
工作(没有显式转换器) '和'真':
In [21]: bool_lines = ['False,False', 'False,True', 'True,False', 'True,True']
In [22]: genfromtxt(bool_lines, delimiter=',', dtype=bool)
Out[22]:
array([[False, False],
[False, True],
[ True, False],
[ True, True]], dtype=bool)
如果您的数据是0和1,您可以将其读作整数然后转换为bool:
In [26]: bits = ['0,0', '0,1', '1,0', '1,1']
In [27]: genfromtxt(bits, delimiter=',', dtype=np.uint8).astype(bool)
Out[27]:
array([[False, False],
[False, True],
[ True, False],
[ True, True]], dtype=bool)
或者您可以为每列使用转换器
In [28]: cnv = lambda s: bool(int(s))
In [29]: converters = {0: cnv, 1: cnv}
In [30]: genfromtxt(bits, delimiter=',', dtype=bool, converters=converters)
Out[30]:
array([[False, False],
[False, True],
[ True, False],
[ True, True]], dtype=bool)