我正在尝试计算数组列表中每四个值的滚动平均值,并将这些值添加到单独的数组列表中。我原始的数组列表称为numlist,它包含1到9之间的值
List<int> numlist = new List<int>();
numlist.Add(1);
numlist.Add(2);
numlist.Add(3);
numlist.Add(4);
numlist.Add(5);
numlist.Add(6);
numlist.Add(7);
numlist.Add(8);
numlist.Add(9);
在计算滚动平均值时,应采用以下方式:
第一平均值=(1 + 2 + 3 + 4)/ 4
第二平均值=(2 + 3 + 4 + 5)/ 4
第三平均值=(3 + 4 + 5 + 6)/ 4
等等
所以第二个数组列表
List<double> avelist = new List<double>();
应该包含这些值
{2.5, 3.5, 4.5, 5.5, 6.5, 7.5}
我怎样才能做到这一点?
您可以像这样使用LINQ:
List<double> averages = Enumerable.Range(0, numlist.Count - 3).
Select(i => numlist.Skip(i).Take(4).Average()).
ToList();
在您的示例中,此操作从i = 0
到i = 5
并从列表开始以索引开始获取4个元素,i
并计算它们的平均值。
您可以像这样输出结果:
Console.WriteLine(string.Join(" ", averages));
滚动平均值具有可变“宽度”的方法如下所示:
public List<double> RollingAverage(List<int> source, int width)
{
return Enumerable.Range(0, 1 + numlist.Count - width).
Select(i => numlist.Skip(i).Take(width).Average()).
ToList();
}
说明文件:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句