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

如何对这段用于阈值计数的Python for循环做NumPy向量化优化

优化后向量化实现代码
import numpy as np

# 第一步:一次性筛选出第2列等于0的样本的第0列值,避免循环中重复计算
valid_col0 = array_ML[array_ML[:, 2] == 0, 0]
# 第二步:统计0到bin_number-1区间内各数值的出现频次
counts = np.bincount(valid_col0[valid_col0 < bin_number].astype(int), minlength=bin_number)
# 第三步:通过后缀和计算每个阈值i对应的「大于i的样本数」
array_ = np.cumsum(counts[::-1])[::-1] - counts

# 可选补充:处理取值超过bin_number的样本,这部分样本大于所有阈值,直接统一累加
out_of_range_cnt = np.sum(valid_col0 >= bin_number)
array_ += out_of_range_cnt
实现逻辑说明
  • 原循环的核心逻辑是对每个阈值i,统计同时满足array_ML[:,0] > i、array_ML[:,2] ==0的样本量,原实现每次循环都重复做全量过滤,数据量大时冗余计算极高。
  • 优化后仅做1次条件过滤,再通过bincount统计频次、cumsum计算后缀和得到所有阈值对应的统计值,时间复杂度从O(bin_number * N)降到O(N),数据量越大性能提升越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:15:03