如何在python中从布尔数组转换为int数组

我有一个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']]


MM们
浏览 700回答 4
4回答

子衿沉夜

好的,将任何数组的类型更改为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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python