如何根据其独特元素重新缩放数组?

How to re-scale an array according to its unique elements?

我想将 0 内的数组重新缩放为 n-1,其中 n 是数组的唯一元素数。例如,如果数组有 4 个独特的元素,如下所示:

array = [0; 0; 0; 3; 3; 3; 3; 5; 5; 5; 6; 6]

然后输出将在 03 范围内重新缩放。所以对于上面的数组,它将是:

output =[0; 0; 0; 1; 1; 1; 1; 2; 2; 2; 3; 3]

怎么做?

如果您想用 0 到唯一值总数减 1 之间的数字替换每个唯一值,并按照它们在数组中首次出现的顺序标记它们,那么您可以使用函数 unique 像这样:

array = [0; 0; 0; 3; 3; 3; 3; 5; 5; 5; 6; 6];
[~, ~, label] = unique(array, 'stable');
label = label-1;

label =

     0
     0
     0
     1
     1
     1
     1
     2
     2
     2
     3
     3