C# 对txt文件里面的大量数据如何快速计算

一个txt文件里面可能有几百行×11列的数据,用StreamReader读取之后,怎么快速计算所有列的数据的平均数?

有想过用数组来计算,比如用循环把第一行第一个数据赋值给array[0][0],第一行第二个数据为array[0][1],依此类推直到赋值到最后一行的第11个数据,然后又用循环把每一列数据对应的数组相加在求平均,这样计算会不会很慢?有没有方便快速的方法计算呢?

  • 你可以用文件大小和公式算出来有多少行,例如N
  • 维持一个长度11的数组 avg
  • 依次读取StreamRead,计算每个数字num 对应的列 index
  • avg[index] += num/N
  • 反复执行

提供一个思路:读到List/DataTable里面,用List/DataTable自带的计算方法

如用DataTable:

double minValue = (double)dataTable.Compute(" min(value) ", "");//最小值
double maxValue = (double)dataTable.Compute(" max(value) ", "");//最大值
double meanValue = (double)dataTable.Compute(" avg(value) ", "");//平均值
double varianceValue = (double)dataTable.Compute(" Var(value) ", "");//方差

......

C#大文件读取和查询--内存映射