Я хочу найти уникальный список с порядком сохранения в виде списка целых чисел, где дубликаты заменяются нулями. Это все в контексте, чтобы найти ближайшие точки из набора многомерных точек в другой.
* ** 1003 тысяча два * Пример
import scipy
import numpy as np
a = np.random.rand(100,4)
b = np.random.rand(200,4)
tree=scipy.spatial.cKDTree(a)
indexesOf_neighbors= tree.query(b, 1)[1]
_, idx = np.unique(indexesOf_neighbors, return_index=True)
print(indexesOf_neighbors)
print(indexesOf_neighbors[np.sort(idx)])
Таким образом, первые появления числа должны быть сохранены. Все следующие дубликаты следует заменить на np.infs, например:
[38 66 79 10 35 83 99 89 68 65 20 np.inf 46 np.inf 24 51 13 0 17 87 90 54 45 63
69 56 np.inf 32 62 49 99 67 82 np.inf 64 np.inf np.inf np.inf ...]
Другой вариант - найти все индексы дубликатов (но не их первое появление)