如何找出距离传感器1米内的摄像头索引?替代np.isclose方案
解决方法
不用np.isclose,直接通过复数差的模长计算距离是最可靠的方式,具体实现步骤:
- 借助numpy的广播特性,计算每个摄像头与所有传感器的坐标差(复数形式)
- 对每个坐标差取绝对值,得到两点间的直线距离
- 检查每个摄像头是否存在至少一个传感器距离≤1米,提取对应的索引
示例代码:
import numpy as np sensors = np.array([-1.6-0.8j, -1.1-0.8j]) cameras = np.array([-3.7-0.8j, -1.6+0.9j, -1.6-0.9j]) # 生成摄像头×传感器的距离矩阵 distances = np.abs(cameras[:, np.newaxis] - sensors) # 标记每个摄像头是否满足"距离任意传感器≤1米"的条件 is_close = np.any(distances <= 1.0, axis=1) # 获取符合条件的摄像头索引 target_indices = np.where(is_close)[0] print(target_indices) # 输出结果:[1 2]
为什么弃用np.isclose?
np.isclose的判断逻辑是|a - b| ≤ atol + rtol * |b|,默认使用了相对容差(rtol)。当传感器位置远离原点时,|b|数值很大,导致允许的误差阈值会远超过1米,完全满足不了固定距离的判断需求。直接计算模长和1米做比较,才是精准适配这个场景的方案。
内容的提问来源于stack exchange,提问作者boham
相关产品推荐
相关产品推荐

