Группировка значений вектора - PullRequest
0 голосов
/ 13 марта 2012

Допустим, у меня есть два вектора:

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 и т. Д.

Теперь я хочу адаптировать вектор 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 голосов
/ 13 марта 2012

Ваш вопрос не соответствует содержанию векторов, которые вы разместили.Кажется, что b - это количество заданного числа в a в строке.Как есть 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...