为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MM们 2021-03-19 11:11:00
我有一个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)


查看完整回答
反对 回复 2021-03-29
  • 4 回答
  • 0 关注
  • 699 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信