Похоже, что с 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)