如何将多维数组转换为锯齿状? (C#)
How to convert multidimensional array to jagged? (C#)
对于一个项目,我有一个包含双精度值的多维数组 (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.
我认为你必须更换你的线路
row[k] = pcaComponents[k, l];
那个
row[l] = pcaComponents[k, l];
你的内循环变量是l不是k
也许您应该使用 GetLength 来调整数组大小:
double[] row = new double[pcaComponents.GetLength(0)];
对于一个项目,我有一个包含双精度值的多维数组 (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.
我认为你必须更换你的线路
row[k] = pcaComponents[k, l];
那个
row[l] = pcaComponents[k, l];
你的内循环变量是l不是k
也许您应该使用 GetLength 来调整数组大小:
double[] row = new double[pcaComponents.GetLength(0)];