Отметить уникальные строки в массиве - PullRequest
0 голосов
/ 17 июня 2020

Считайте, что у меня есть массив 5 x 3 numpy.

5 x 3 Array:

 4 5 6 6 7
 4 5 6 6 7
 1 1 2 3 5
 1 1 2 3 5
 4 5 6 7 8 

Теперь результат должен быть таким, как показано ниже, так как первые две строки такие же, поэтому сделайте его кластером 0, а третья, четвертая строки то же самое, следовательно, кластер 1, последняя строка переходит в кластер2.

0
0
1
1
2

1 Ответ

2 голосов
/ 17 июня 2020

Похоже, что с np.unique s return_inverse вы можете получить то, что хотите:

a = np.array([[ 
 [4, 5, 6, 6, 7],
 [4, 5, 6, 6, 7],
 [1, 1, 2, 3, 5],
 [1 ,1, 2, 3, 5],
 [4, 5, 6, 7, 8]]])

np.unique(a, axis=1, return_inverse=True)

(array([[[1, 1, 2, 3, 5],
         [4, 5, 6, 6, 7],
         [4, 5, 6, 7, 8]]]),
 array([1, 1, 0, 0, 2], dtype=int64))
_, clusters = np.unique(a, axis=1, return_inverse=True)
print(clusters)
# array([1, 1, 0, 0, 2], dtype=int64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...