【问题标题】:How to convert multidimensional array to jagged? (C#)如何将多维数组转换为锯齿状? (C#)
【发布时间】:2015-06-28 10:26:45
【问题描述】:

对于一个项目,我有一个包含双精度值的多维数组 (double[,])。由于我使用的是accord 框架中的一种方法,该方法期望接收一个锯齿状的双精度数组 (double[][]),因此我需要将一个转换为另一个。但是,使用下面的代码,我注意到我从来没有到达 inputs[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 次,但它似乎没有达到 inputs[k] = row;语句并且不会继续第一个循环,其中 pcaComponents.GetLength(1) 等于 165。

【问题讨论】:

  • 你以某种方式混淆了行和列,pcaComponents[k, l] 表示k 应该由pcaComponents.GetLength(0) 绑定

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


【解决方案1】:

我认为你必须更换你的线路

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

那个人

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

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

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

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

【讨论】:

  • 多么愚蠢的错误,很容易被忽视,谢谢指出!
猜你喜欢
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 2014-10-16
  • 2013-06-21
  • 1970-01-01
相关资源
最近更新 更多