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]
Другие вопросы по тегам