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
EDIT:
unique count
, будет давать подсчеты каждого из уникальных значений, т.е. 1 из [10,10]
, 2 of [12,9]
и 1 of [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]