如何将下三角矩阵转换为向量?

How to convert lower triangular matrix into a vector?

我想将三角矩阵转换为向量。

假设我有 7x7 下三角矩阵。像这样:

0  0  0  0  0  0  1

0  0  0  0  0  2  3

0  0  0  0  4  5  6

0  0  0  7  8  9 10

0  0  11 12 13 14 15

0  16 17 18 19 20 21

22 23 24 25 26 27 28

而且我需要将此矩阵转换为忽略零的向量。所以,结果应该是:

[1 2 3 4 5 6 7 8 9 10 11 12 13 14 ... 28]

我已经通过以下代码制作了一个矩阵:

int specMas[][] = new int[7][7];
        Random rand = new Random();
        int i, j;
        
        for(j = 6; j > -1; j--) {
            
            for(i = 6; i > 5-j; i--) {
            
            specMas[i][j] = rand.nextInt(-100, 101);
            
            
            }
        }
        
        for (i=0; i<7; i++) {
            for (j=0; j<7; j++)
                System.out.print(specMas[i][j]);
            System.out.println();
        }

但我真的不知道如何将其转换为向量。你能解释一下怎么做吗?

只过滤掉下面的0值

        int k = 0;
        Integer[] array = new Integer[specMas.length * specMas.length];

        for (i = 0; i < specMas.length; i++) {
            for (j = 0; j < specMas[i].length; j++) {
                array[k++] = specMas[i][j];
            }
        }
        Integer[] result = Arrays.stream(array)
                .filter(o -> o != 0).collect(Collectors.toList()).toArray(Integer[]::new);

结果数组将是您想要的答案,顺便说一句,将 2 阶张量转换为向量的概念非常有用,通过这种方法您可以转移 4 阶张量 (supper-operators) 到张量等级 2(矩阵)然后研究它们在新向量中的行为 space .

验证最终结果为

        for (i = 0 ; i< result.length ; i++){
            System.out.print(result[i]);
        }