Как выбрать столбцы из матрицы с помощью алгоритма - PullRequest
0 голосов
/ 13 апреля 2019

Я пишу пользовательскую функцию в python для эффективного извлечения определенных фрагментов столбцов из матрицы.

Моя матрица 48 на 16240. Данные организованы в некоторый столбец шаблона.
Myцель состоит в том, чтобы сделать 4 матрицы из этого.Первую матрицу извлекают путем выбора первых 70 столбцов, пропускают следующие 210, выбирают следующие 70, пропускают следующие 210, до конца матрицы.

Вторая матрица извлекается путем выбора вторых 70 столбцов, пропуска следующих 210, выбора следующих 70, пропуска следующих 210 до конца матрицы.

Третья ичетвертая матрица извлекается путем выбора третьего и четвертого столбцов 70 соответственно, таким же образом, как описано выше.

Как можно видеть, 16240 делится на 70.

Есть ли способчтобы сделать это эффективно?

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Вот как я перебрал бы каждый индекс столбца, который вы хотите обработать:

public static void main(String... args) {
    int blocks = 16240 / 280;
    // process each 280 column block...
    for (int i = 0 ; i < blocks ; i++) {
        // process the first 70 columns of the block
        for (int j = 0 ; j < 70 ; j++) {

            // Compute the column index
            int s = i * 280 + j;

            // Process the column with index 's' here
            System.out.println(s);
        }
    }
}

Сводка итоговых индексов столбцов:

0
1
2
...
67
68
69
280
281
282
283
...
348
349
560
561
562
...
627
628
629
840
841
842
...
...
15748
15749
15960
15961
15962
...
16028
16029

Одиночный ... - это пропуск последовательных чисел. Double ... - пропуск средней части вывода полного числа.

1 голос
/ 13 апреля 2019

Индекс столбца i должен удовлетворять 0 =< i modulo (210+70) <= 70-1

...