加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python中将boolean转换为整数位置

发布时间:2020-12-20 13:01:39 所属栏目:Python 来源:网络整理
导读:参见英文答案 Getting indices of True values in a boolean list????????????????????????????????????6个 我有一个布尔列表,说: x = [True,False,True] 如何将此列表转换为整数位置,以便获得结果: y = [1,4] ? 解决方法 您可以将列表推导与 enumerate功
参见英文答案 > Getting indices of True values in a boolean list????????????????????????????????????6个
我有一个布尔列表,说:

x = [True,False,True]

如何将此列表转换为整数位置,以便获得结果:

y = [1,4]

解决方法

您可以将列表推导与 enumerate功能结合使用,例如:

>>> x = [True,True]
>>> [index for index,element in enumerate(x,start=1) if element]
[1,4]

或者,如果您愿意使用NumPy并获得numpy.ndarray类型的结果,那么NumPy函数(几乎)可以满足您的需求:numpy.where.

>>> import numpy
>>> numpy.where(x)
(array([0,3]),)
>>> numpy.where(x)[0] + 1
array([1,4])

上面一行中的奇怪[0]是因为numpy.where总是在元组中返回它的结果:输入数组的每个维度的元组的一个元素.由于在这种情况下输入数组是一维的,我们并不真正关心外部元组结构,因此我们使用[0]索引操作来提取我们需要的实际数组. 1是从Python / NumPy的标准的基于0的索引到基于1的索引,它看起来好像你想要的.

如果您正在处理大量输入数据(特别是如果输入列表已经是NumPy数组的形式),则NumPy解决方案可能明显快于列表推导.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读