如何将多维数组转换为锯齿状? (C#)

时间:2015-04-21 10:11:09

标签: c# arrays multidimensional-array jagged-arrays

对于一个项目,我有一个包含double值的多维数组(double [,])。由于我使用了一个方法框架中希望接收锯齿状的双精度数组(double [] [])的方法,我需要将一个转换为另一个。但是,使用下面的代码,我注意到我从未到达输入[k] = row;言。

double[][] inputs = new double[165][];

// Loop through # of rows
for (int k = 0; k < pcaComponents.GetLength(1); k++)
{
       double[] row = new double[20];

       // Loop through # of columns
       for (int l = 0; l < pcaComponents.GetLength(0); l++)
       {
            row[k] = pcaComponents[k, l];
       }
        inputs[k] = row;
}

pcaComponents的类型为double [,],并从另一段代码传递。通过使用getLength属性,我可以看到,当我传递1时,结果为165,即行数#,通过0,我可以看到结果为20,即列数。然后我尝试使用多维数组中的值为锯齿状数组创建一个新行。它循环通过第二个循环20次,但它似乎没有到达输入[k] =行;声明并且不会继续第一个循环,其中pcaComponents.GetLength(1)等于165。

1 个答案:

答案 0 :(得分:1)

我认为你必须更换你的行

row[k] = pcaComponents[k, l];

由那个

row[l] = pcaComponents[k, l];

你的内环的变量是l而不是k

也许您应该使用GetLength来调整数组的大小:

double[] row = new double[pcaComponents.GetLength(0)];