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

如何快速统计两个numpy数组满足各自条件的共同索引数量?

快速统计numpy数组中同时满足条件的索引数量

要高效解决这个问题,直接利用numpy的向量化布尔操作即可,这是处理numpy数组最快的方式,完全避免Python循环的开销。

步骤如下:

  • 分别生成两个布尔掩码:标记arr1中大于10的元素、arr2中大于100的元素
  • 对两个掩码执行逻辑与操作,得到同时满足两个条件的布尔数组
  • 统计结果中True的数量

代码示例

import numpy as np

# 示例输入数组
arr1 = np.array([3, 11, 9, 15, 22, 7])
arr2 = np.array([80, 105, 120, 95, 130, 90])

# 生成布尔掩码
mask_arr1 = arr1 > 10
mask_arr2 = arr2 > 100

# 计算同时满足条件的索引数量
# 两种等价方式,np.count_nonzero在大数组上性能略优
count = np.count_nonzero(mask_arr1 & mask_arr2)
# 或者 count = (mask_arr1 & mask_arr2).sum()

print(count)  # 输出:3

关键说明

  • numpy的布尔操作是底层C实现的向量化运算,比Python循环快几个数量级,尤其适合处理大规模数组
  • 确保两个输入数组形状一致(或满足numpy广播规则),否则会报错
  • np.count_nonzero()和.sum()都能统计True的数量,前者在处理超大数组时性能更稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:18:09