如何从锯齿状数组中提取一列

本文关键字:一列 提取 锯齿状 数组 | 更新日期: 2023-09-27 18:21:32

我有一个锯齿状数组,它基本上只是一个有m行n列的矩阵(我知道我本可以使用普通矩阵,但我读到使用锯齿状数组矩阵乘法更快)。

我希望只从一列中提取每一行,而不使用for循环。这是怎么做到的。此外,请解释代码,因为我找到了一个答案,声称以下内容应该有效,但我不知道如何使其适应我的情况。

object[] column = Enumerable.Range(0, myArray.GetLength(0))
                            .Select(rowNum => (object)myArray[daily.m, daily.n])
                            .ToArray(); 

好吧,下面的答案似乎不会给我带来错误,但现在我遇到了另一个问题:

var selectedArray = myArray.Where(o => (o != null && o.Count() > daily.dependentVarIndex)).Select(o => o[daily.dependentVarIndex]).ToArray();
            Method1 m1 = new Method1(13);
            for (int i = 0; i < daily.m; i++)
            {
                m1.do(selectedArray[i]); //this give me an error
            }

现在如何为对象"selectedArray"编制索引?请注意,我在代码的前面定义了Method1,即fxn"do"。

如何从锯齿状数组中提取一列

使用lambda:

var jaggedArray = new int[5][];
jaggedArray[0] = new[] { 1, 2, 3 }; // 3 item array
jaggedArray[1] = new[] { 7, 6 };
jaggedArray[3] = new int[10]; // 10 item array of 0's
const int selectItem = 0;
var selectedArray = jaggedArray
    .Where(o => (o != null && o.Count() > selectItem))
    .Select(o => o[selectItem])
    .ToArray();

以下数组应包含3项

[1,7,0]

int [][] jaggedArray = /* SNIP */
jaggedArray.Select(row => row.Length >= ZERO_INDEXED_COLUMN_NO + 1
                           ? (int?)row[ZERO_INDEXED_COLUMN_NO]
                           : null)
           .ToArray();

其中ZERO_INDEXED_COLUMN_NO是要检索的列的零索引号。结果是具有null值的(int?)的数组,其中给定行要短到具有ZERO_INDEXED_COLUMN_NO条目。