簡體   English   中英

如何將多維數組轉換為鋸齒狀? (C#)

[英]How to convert multidimensional array to jagged? (C#)

對於一個項目,我有一個包含雙精度值的多維數組(double [,])。 由於我使用了來自Accord框架的方法,該方法希望接收鋸齒狀的double數組(double [] []),因此我需要將其中一個轉換為另一個。 但是,使用下面的代碼,我注意到我從未到達輸入[k] =行; 聲明。

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。

我認為您必須更換線

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

由那個

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

您內部循環的變量不是l

也許您應該使用GetLength來調整數組大小:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM