【发布时间】:2019-01-26 01:49:43
【问题描述】:
如果可能的话,我不知道该怎么做。
一个例子:
int[][] myArrays = {
new int[] {1, 2, 3},
new int[] {4, 5, 3},
new int[] {1, 2, 3}
};
int[] avgArray = myArrays.//Some LINQ statement to average every Nth element in the second dimension (essentially "flatten" the array)
//avgArray == {2, 3, 3}
要做到这一点,我只能想到:
int ndDimLen = myArrays.GetLength(1);
int[] avgArray = new int[ndDimLen];
myArrays.Select(
arr => arr.Select( (n, i) => avgArray[i] += n )
);
avgArray = avgArray.Select( n => n / ndDimLen ).ToArray();
但这违背了目的,对于锯齿状数组来说并不是一个特别好的主意......
另外,我绝对希望避免转置,因为在大型数组上操作时它是一个相当慢的操作!
感谢您的宝贵时间!
【问题讨论】:
-
在您的示例中,每个子数组具有相同数量的元素。会一直这样吗?
-
您的数组是 int 数组的数组,而不是二维数组。所以没有真正的«列»概念。您可以模拟它,但这不是 linq 处理此类数据的最终目的。