2D эквивалент numpy.unique
У меня есть набор дискретизированных координат в Nx2 numpy.ndarray
,
Я хотел бы получить количество и индексы каждого из этих уникальных наборов координат. numpy.unique
делает именно это, но для скалярных элементов.
Есть ли какой-то чистый способ сделать это с помощью numpy
?
Пример:
#input
coor = np.array([[10,10],[12,9],[10,5],[12,9]])
#output
unique_count = np.array([1,2,1])
unique_index = np.array([0,1,2]) #1 could also be 3
РЕДАКТИРОВАТЬ: unique count
, даст количество каждого из уникальных значений, то есть: 1 из [10,10]
, 2 из [12,9]
и 1 из [10,5]
, Затем можно найти значения, которые соответствуют coor[unique_index]
1 ответ
Ты можешь использовать .count()
а также .index()
методы списка
coor = np.array([[10, 10], [12, 9], [10, 5], [12, 9]])
coor_tuple = [tuple(x) for x in coor]
unique_coor = sorted(set(coor_tuple), key=lambda x: coor_tuple.index(x))
unique_count = [coor_tuple.count(x) for x in unique_coor]
unique_index = [coor_tuple.index(x) for x in unique_coor]