Nico
Published on 2025-05-23 / 31 Visits
0
0

C#的LINQ写法,实现“按行列取平均”

对每一列取平均

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        var x = new List<List<double>> {
            new List<double> {3, 6, 9},
            new List<double> {6, 7.5, 9},
            new List<double> {9, 9, 9}
        };

        int cols = x[0].Count;
        var averages = Enumerable.Range(0, cols)
                                .Select(i => x.Average(row => row[i]))
                                .ToList();

        Console.WriteLine(string.Join(", ", averages)); // 输出:6, 7.5, 9
    }
}

代码说明:

Enumerable.Range(0, cols) 生成所有列的索引号。

x.Average(row => row[i]) 对每一列同位置的数字取平均。

.ToList() 结果转为List<double>。

这种方式非常适合对“列表的每一个index取平均”这种场景!

对每一行取平均

 var averages = Enumerable.Range(0, rowCount)
                     .Select(i => x[i].Average())
                     .ToList();

随机排列

var seq = Enumerable.Range(0, TaskDurations.Length).OrderBy(x => rand.Next()).ToArray();


Comment