Python统计numpy数组每行中超过指定阈值的元素个数
实现方法
直接用numpy的向量化操作就能快速得到结果,逻辑很简单:
- 先通过比较运算符
>生成和原数组形状一致的布尔数组,数值大于3的位置为True(数值计算中等价于1),否则为False(数值计算中等价于0) - 指定按行维度对布尔数组求和,得到的结果就是每行大于3的元素总数
完整代码示例
import numpy as np data = np.array([[1, 2, 3, 4, 5], [9, 7, 3, 5, 8], [1, 2, 3, 9, 6]]) # 核心逻辑:大于3的判断 + 按行求和 res = (data > 3).sum(axis=1) # 如果需要输出普通Python列表,改为 res = (data > 3).sum(axis=1).tolist() print(res)
运行后输出:
[2 4 2] # 转列表后输出为 [2, 4, 2]
如果不想依赖numpy的API,也可以用原生Python的列表推导式实现:
res = [sum(1 for num in row if num > 3) for row in data]
这种写法适合小体量数据,数据量大的场景优先用numpy的向量化方案,运行效率高很多。
内容的提问来源于stack exchange,提问作者Blg Khalil
相关产品推荐
相关产品推荐

