import numpy as np labels = np.array(["api", "web", "api", "batch", "web", "api"]) unique, first_index, inverse, counts = np.unique( labels, return_index=True, return_inverse=True, return_counts=True, ) first_seen_order = np.argsort(first_index) print("input:", labels) print("unique sorted:", unique) print("counts:", counts) print("first positions:", first_index) print("first-seen unique:", unique[first_seen_order]) print("first-seen counts:", counts[first_seen_order]) print("inverse:", inverse) print("reconstructed:", unique[inverse]) print("matches input:", np.array_equal(unique[inverse], labels))