C# 使用LINQ查找包含多个集合的平均值的集合
LINQ:我有一个数组列表,我想得到一个包含每列平均值的集合。比如:C# 使用LINQ查找包含多个集合的平均值的集合,c#,linq,C#,Linq,LINQ:我有一个数组列表,我想得到一个包含每列平均值的集合。比如: var myCollection = new List<double[]>(); myCollection.Add(new []{1,2,3,4,5}); myCollection.Add(new []{3,4,5,6,7}); // Your answer --> {2,3,4,5,6} var myCollection=newlist(); 添加(新[{1,2,3,4,5}); 添加(新[{3,
var myCollection = new List<double[]>();
myCollection.Add(new []{1,2,3,4,5});
myCollection.Add(new []{3,4,5,6,7});
// Your answer --> {2,3,4,5,6}
var myCollection=newlist();
添加(新[{1,2,3,4,5});
添加(新[{3,4,5,6,7});
//你的答案-->{2,3,4,5,6}
像这样吗
var myCollection = new List<double[]>();
myCollection.Add(new double[]{1,2,3,4,5});
myCollection.Add(new double[]{3,4,5,6,7});
var qry = (from col in Enumerable.Range(0, myCollection.Min(arr => arr.Length))
select myCollection.Average(arr => arr[col])).ToList();
或者,如果您只需要平均值(而不是anon类型):
由于您已经修改了问题,将二维数组更改为
列表
,另一种解决方案是:
var result = myCollection.Aggregate((arr1, arr2) => arr1.Zip(arr2, (x, y) => (x + y) / 2).ToArray())
锯齿状的还是实际上是二维的?“列”是哪个维度?更好的是,提供一个数组数据的代码示例。好的,编辑不是一个“二维数组”-它是一个数组列表。你是否假设行数是预先知道的?@Amittai:不,他不是。使用
GetLength(0)
和GetLength(1)
是因为这是一个二维数组。我知道它应该很简单,但我不知道Range方法。看起来很有用,10倍:-)谢谢,但我使用的是3.5,它没有Zip操作符。
var qry = (from col in Enumerable.Range(0, data.GetLength(0))
select Enumerable.Range(0, data.GetLength(1))
.Select(row => data[col, row]).Average()).ToList();
var result = myCollection.Aggregate((arr1, arr2) => arr1.Zip(arr2, (x, y) => (x + y) / 2).ToArray())