如何为每个内部条目平均List <List <double >>?

Joh*_*ust 2 c# linq average list montecarlo

我正在做一个MonteCarlo模拟,我几乎完成了为我的应用程序的那部分编写代码.我有以下列表:

List<List<double>> myFullList = new List<List<double>>();
List<double> myInnerList = new List<double>();

for(int i = 1; i <= numberOfLoops; i++)
{ 
    for(int i = 1; i <= 10; i++)
    {
        // Populate inner list with random numbers
        myInnerList.Add(double myRandomNumber);
    }

    // Add the inner list to the full list
    myFullList.Add(myInnerList);
}
Run Code Online (Sandbox Code Playgroud)

该列表应如下所示:

myFullList[0] = {rand#1,rand#2,rand#3,...,rand#10}
myFulllist[1] = {rand#1,rand#2,rand#3,...,rand#10}
.
.
.
.
myFulllist[1] = {rand#1,rand#2,rand#3,...,rand#10}
Run Code Online (Sandbox Code Playgroud)

我需要将这些数据平均为一个单独的列表,如下所示:

List<double> averagedData = new List<double>();
averagedData = {avg#1, avg#2........avg#10}
Run Code Online (Sandbox Code Playgroud)

此输出变量将平均内部列表中相同"行"数据的数据.

简单的例子:

innerList[0] = {1,2,3};
innerList[1] = {3,2,1};

fullList = {innerList[0], innerList[1]};

averageList = {2,2,2};
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

如果您只是想平均每个内部列表,您可以使用:

List<double> averagedData = myFullList.Select(l => l.Average()).ToList();
Run Code Online (Sandbox Code Playgroud)

如果您试图平均数据的"列",这似乎是您的示例中的情况,您可以执行以下操作:

var averagedData = myFullList[0].Select((v,c) =>
                       myFullList.Average(r => r[c])
                  ).ToList();
Run Code Online (Sandbox Code Playgroud)

  • 在OP的示例中,`fullList`中有两个列表,但是3个结果是`averageList`.看起来他想要对"列"而不是"行"进行平均分析. (3认同)