0

I have a list of values, let them be

a_list_sort = [2, 3, 4, 4.1, 5, 5.05, 2.1, 3.05, 7, 2.2, 3.2]

My goal is to get a list present_a with 'unique' values from a_list_sort, and by 'unique' I mean following: If the n-th value from a_list_sort is close to one of the values already present in present_a, it is not 'unique', otherwise it is and it is added to present_a.

I tried this code:

angle_th = 0.1
present_a = [a_list_sort[0]] #  Because the first value in a_list_sort is 'unique' a priori
present_a_idxs = [] #  List of indexes
for a_idx in range(1, len(a_list_sort)):
    if np.any(np.abs(np.asarray(present_a) - a_list_sort[a_idx]) < angle_th):  #  Is not 'unique'
        pass
    else:
        present_a.append(a_list_sort[a_idx])
        present_a_ind.append(a_idx)

For

angle_th = 0.1
a_list_sort = [2, 3, 4, 4.1, 5, 5.05, 2.1, 3.05, 7, 2.2, 3.2]

it strangely yields

>>> present_a
[2, 3, 4, 5, 2.1, 7, 2.2, 3.2]

while I expect

>>> present_a
[2, 3, 4, 4.1, 5, 2.1, 7, 2.2, 3.2]

because 4.1 is not close enough (with threshold = 0.1). Note that element 2.1 is somehow processed correctly.

I really have no idea what why is this happening. Am I missing something obvious?

StacyAlex
  • 1
  • 1

0 Answers0