Если у вас есть несколько функций, для которых вам нужны значения столбцов, напишите функцию расширения для выборки столбцов (= транспонировать матрицу)
могу понять, как это сделать, если вообще возможно.
Пример:
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();
Но это побеждает цель и не очень хорошая идея для зубчатых массивов ...
Кроме того, я определенно хотел бы избежать транспонирования, поскольку при работе с большими массивами это довольно медленная операция!
Спасибо за уделенное время!