首页 > 解决方案 > 如何使用 numpy "allclose" 返回一个公共值数组?

问题描述

我想比较两个一维高度数组的共同值。

但是,我不想只找到它们之间的精确高度——“足够接近”的高度也应该被计算在内。就我而言,彼此相距 2 米以内的高度应被视为“相等”。

我尝试使用 allclose 开始:

rtol = 2
atol = 2
common_altitudes = np.allclose(altitude_array_1,altitude_array_2,atol,rtol)

返回“真”

但是,我想得到一个阵列,其中包括一个阵列中的所有这些常见(或 2 米内)高度。这样做的最佳方法是什么?

标签: pythonarraysnumpy

解决方案


要取回具有公共值的数组,您需要过滤原始数组中的值:

a = np.array([10, 11, 13, 15])
b = np.array([10,  9,  9, 11])

common = a[np.isclose(a,b,atol=2,rtol=0)]
# [10 11]

推荐阅读