Skip to content

Commit 04e901d

Browse files
fix(unique): counts were not handled right in _unique_via_remap
1 parent dbb4bfb commit 04e901d

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

fastremap/fastremap.pyx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,17 +1000,17 @@ def _unique_via_renumber(labels, return_index=False, return_inverse=False):
10001000
uniq, idx, counts, inverse = _unique_via_array(labels, max(remap.keys()), return_index, return_inverse)
10011001
uniq = np.array([ remap[segid] for segid in uniq ], dtype=dtype)
10021002

1003-
if not return_index and not return_inverse:
1004-
uniq.sort()
1005-
return uniq, idx, counts, inverse
1003+
sort_idx = np.argsort(uniq)
1004+
1005+
uniq = uniq[sort_idx]
1006+
counts = counts[sort_idx]
10061007

1007-
uniq, idx2 = np.unique(uniq, return_index=True)
10081008
if idx is not None:
1009-
idx = idx[idx2]
1010-
if counts is not None:
1011-
counts = counts[idx2]
1009+
idx = idx[sort_idx]
10121010
if inverse is not None:
1013-
inverse = idx2[inverse]
1011+
inv_map = np.empty_like(sort_idx)
1012+
inv_map[sort_idx] = np.arange(len(sort_idx))
1013+
inverse = inv_map[inverse]
10141014

10151015
return uniq, idx, counts, inverse
10161016

0 commit comments

Comments
 (0)