You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用for循环求numpy数组中小于阈值0.5的最长连续元素个数

Numpy无for循环实现统计连续小于0.5元素的最大个数

我们可以完全基于numpy向量化操作实现需求,全程不需要写显式for循环:


完整实现代码

import numpy as np

# 构造输入数组
arr = np.array([0.66594665, 0.33003433, np.nan, 0.42567293, 0.48161913, 0.30000838, 0.13639367, 0.84300475, 0.19029748, np.nan])

# 1. 生成布尔掩码,标记小于0.5的元素,NaN参与比较默认返回False,刚好作为序列分隔点
mask = arr < 0.5

# 2. 对掩码的反转值做累加,给每一段连续的True/False分配唯一分组编号
groups = np.cumsum(~mask)

# 3. 统计所有符合条件的分组的元素个数,取最大值即为结果,兼容无符合条件元素的极端场景
max_count = np.bincount(groups[mask]).max() if mask.any() else 0

print(max_count) # 输出结果为4,和示例预期一致

逻辑说明

  • 布尔掩码mask中,只有取值小于0.5的有效数值位置会被标记为True,大于等于0.5的数值、NaN都会被标记为False
  • 分组编号groups每遇到一个False就会自增1,保证每一段连续的True都属于同一个分组
  • 用np.bincount统计每个有效分组的元素数量,最大值就是我们要的最长连续序列长度

内容的提问来源于stack exchange,提问作者user308827

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:30:05