我有一个Numpy二维数组,其中一列具有布尔值,即True/ False。我想将其转换为整数1,并0分别,我该怎么办呢?例如,我data[0::,2]是布尔值,我尝试过data[0::,2]=int(data[0::,2]),但这给了我错误:TypeError: only length-1 arrays can be converted to Python scalars我的数组的前5行是:[['0', '3', 'True', '22', '1', '0', '7.25', '0'], ['1', '1', 'False', '38', '1', '0', '71.2833', '1'], ['1', '3', 'False', '26', '0', '0', '7.925', '0'], ['1', '1', 'False', '35', '1', '0', '53.1', '0'], ['0', '3', 'True', '35', '0', '0', '8.05', '0']]
4 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
好的,将任何数组的类型更改为float的最简单方法是:
data.astype(float)
数组的问题float('True')是一个错误,因为'True'无法将其解析为浮点数。因此,最好的办法是修复数组生成代码,以产生浮点数(或至少具有有效浮点数文字的字符串)而不是布尔值。
同时,您可以使用此函数来修复数组:
def boolstr_to_floatstr(v):
if v == 'True':
return '1'
elif v == 'False':
return '0'
else:
return v
最后,您像这样转换数组:
new_data = np.vectorize(boolstr_to_floatstr)(data).astype(float)
添加回答
举报
0/150
提交
取消