对矢量的值进行分组

时间:2012-03-12 21:38:05

标签: vector grouping

让我们说 - 我有两个向量:

a    numbers=[14 14 2 25 25 14 14 14 2 23 23 23]:
b    frequency_of_the_numbers_above=[2 1 2 3 1 3];

c    new_numbers=[14 14 14 14 14 2 2 2 2 25 25 25 25 25 25 25 14 14 14 14 14 2 2 2 2 23 23 23 23 ];

b描述了向量a中的值出现的频率。例如:数字14两次,这就是为什么b中的第一个数字是2,向量中的数字2一次,这就是为什么向量b中的第二个数字是1等等。 / p>

我现在想要的是将矢量b调整为矢量c,以便结果看起来像:

new_numbers[14 14 14 14 14 2 2 2 2 25 25 25 25 25 25 25 14 14 14 14 14 2 2 2 2 23 23 23 23 ];
frequency_numbers_for_new_numbers=[2 2 2 2 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 1 1 1 1 3 3 3 3];

1 个答案:

答案 0 :(得分:0)

您的问题似乎与您发布的向量中的内容不符。 b似乎是一个给定数字中有多少出现在一个行中。因为有5 14个。你的结果似乎是b中重复的数字c中那个元素的数量是你想要的吗? a和c是否始终包含相同顺序的相同数字?

好吧,我会编写代码来执行我所描述的(在java中)

int index = 0;
int currentVal = c[0];
int[] result = new int[c.length];

for(int i = 0; i < result.length; i++)  {
    if(c[i] != currentVal) {
        index++; //if the number changed go to the next index for b
        currentVal = c[i]; //update the currentVal to the new value
    }
    result[i] = b[index]; //copy the value from b into the result vector
}