Source code for aerocaps.utils.array
import numpy as np
[docs]
def unique_with_tolerance(arr: np.ndarray, rtol: float = 1e-5, atol: float = 1e-8) -> np.ndarray:
"""
Find unique elements in an array with a specified tolerance.
"""
assert arr.ndim == 2
unique_values = {0: arr[0]}
for idx, value in enumerate(arr[1:], start=1):
for unique_value in unique_values.values():
if all([np.isclose(v1, v2, rtol=rtol, atol=atol) for v1, v2 in zip(value, unique_value)]):
break
else:
unique_values[idx] = value
return np.array(list(unique_values.values()))