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

如何判断numpy数组元素是否落在2列numpy数组区间且无需for循环

无循环实现方案

核心利用numpy的广播机制,一行代码即可完成计算:

result = (b[:, None, 0] <= a) & (a <= b[:, None, 1])

代码验证

用你给出的示例测试完整代码如下:

import numpy as np

a = np.array([10,  2,  5])
b = np.array([[ 0,  5],[ 5, 10]])

result = (b[:, None, 0] <= a) & (a <= b[:, None, 1])
print(result)
# 输出:
# [[False  True  True]
#  [ True False  True]]

原理解释

  • 我们给b[:,0](形状为(M,))和b[:,1](形状为(M,))各新增一个维度,变成形状(M,1)
  • 一维数组a的形状为(N,),和(M,1)的数组做比较运算时,会触发numpy广播机制,自动扩展为(M,N)的形状逐元素计算
  • 两个布尔数组做按位与运算,就得到每个位置的区间判断结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:27:04