是否存在内置函数可返回布尔向量中的真值数量?
统计布尔向量中真值数量的高效方法
当然有更高效的办法啦!在Python里,统计布尔列表里True的数量,用内置的sum()函数就是最快最简洁的方案,比手动写for循环靠谱多了。
为什么sum()这么好用?
因为在Python的设计里,True等价于整数1,False等价于0,直接对布尔列表求和,得到的结果正好就是True的个数。而且sum()是用C语言实现的内置函数,执行效率远高于纯Python编写的for循环——尤其是当你的布尔向量特别大的时候,这个性能差距会非常明显。
举个实际例子
就拿你给出的向量来说:
b = [True, True, False, False, True, False] print(sum(b)) # 输出结果就是3,完全符合你的需求
处理大规模数组的额外方案
如果你是在处理大规模的布尔数组(比如用numpy做数据处理),还可以用numpy.count_nonzero(),它专门用来统计数组中非零元素的数量,对于布尔数组来说,True就是非零值,所以也能快速得到结果:
import numpy as np arr = np.array([True, True, False, False, True, False]) print(np.count_nonzero(arr)) # 同样输出3
总之,普通Python列表用sum()就足够高效,numpy数组的话用count_nonzero()更合适,都比手动写for循环要快得多。
内容的提问来源于stack exchange,提问作者sinoky
相关产品推荐
相关产品推荐

