如何使用算法从矩阵中选择列

时间:2019-04-13 00:02:15

标签: python numpy-slicing

我正在用python编写用户定义的函数,以有效地从矩阵中提取特定的列块。

我的矩阵是16240的48。数据按某种模式按列组织。
我的目标是从中制成4个矩阵。通过选择前70列来提取第一个矩阵,跳过下一个210列,选择下一个70列,跳过下一个210列,直到矩阵的结尾。

通过选择后70列来提取第二个矩阵,跳过下一个210列,选择下一个70列,跳过下一个210列,直到矩阵的结尾。

以与上述相同的方式分别选择第三和第四70列来提取第三和第四矩阵。

可以看到,16240被70除。

有没有办法有效地做到这一点?

2 个答案:

答案 0 :(得分:1)

列索引i应该满足0 =< i modulo (210+70) <= 70-1

答案 1 :(得分:1)

这是我要遍历要处理的每个列索引的方式:

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

Single ...是省略的连续数字。 Double ...省略了整数输出的中间部分。