Групиране на стойности на вектор

Да кажем - имам двата вектора:

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 във вектор a веднъж, затова второто число във вектор b е 1 и т.н.

това, което сега искам, е да адаптирам вектор 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];

person Hakan Kiyar    schedule 12.03.2012    source източник
comment
въпросът ви изглежда не отговаря на това, което е във векторите, които сте публикували. Изглежда, че b е колко от дадено число се появява в a в РЕД. Тъй като има 5 14s в a. И вашият резултат изглежда е каквото и да е числото в b, повторено за номера на този елемент в c, това ли искате? Винаги ли a и c съдържат едни и същи числа в същия ред?   -  person twain249    schedule 13.03.2012
comment
Можете ли да дадете на вашите вектори по-описателни имена? Правилното именуване на обектите ви ще направи въпроса по-ясен за нас и също ще направи всяко решение по-лесно за следване.   -  person sgmorrison    schedule 13.03.2012
comment
Не, имам модел в a и b, където първото число на b описва броя на същите стойности, които са съседни в a. това означава две 14s, едно 2, две 25s и т.н. Сега искам да имам стойността на 2, която означава 14 в точно същия брой пъти като в c - това означава за 5 14s в c пет 2s в c и т.н. петте 14 в c и т.н. - надявам се, че успях да се обясня....   -  person Hakan Kiyar    schedule 13.03.2012


Отговори (1)


въпросът ви изглежда не отговаря на това, което е във векторите, които сте публикували. Изглежда, че b е колко от дадено число се появява в a в РЕД. Тъй като има 5 14 в a. И вашият резултат изглежда е каквото и да е числото в 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
}
person twain249    schedule 12.03.2012