统计NumPy数组每行的True-False转换次数
统计二维布尔数组每行True到False的转换次数
可以利用NumPy的向量式操作实现高效计算,无需循环遍历每行,具体实现如下:
解决方案代码
import numpy as np a = np.array([[True, False, True, False, True], [True , True, True , True, True], [True , True ,False, False ,False], [False, True , True, False, False], [True , True ,False, True, False]]) # 按行计算相邻元素的差值 diff_arr = np.diff(a, axis=1) # 统计每行中True→False的转换次数(对应diff结果为-1的位置) count = np.sum(diff_arr == -1, axis=1) print(count) # 输出: [2 0 1 1 2]
原理说明
np.diff(a, axis=1):按行计算数组中相邻元素的差值。由于布尔值在NumPy中本质是整数(True=1,False=0),True→False的转换对应后一个元素减前一个元素的结果为-1。np.sum(diff_arr == -1, axis=1):按行统计差值等于-1的元素数量,即为每行中True到False的转换次数。
该方法完全基于NumPy的内置向量操作,避免了Python循环,在处理大型数组时能保持极高的运算效率。
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

