我想知道是否还有另一种编码方式 这个问题的核心是解决这个问题的最简单方法是读取文件并将值保存在列表中。那么你会在哪里:
a = [1,2,3,4,5,6,1,1,1,1]
import statistics
listMode = statistics.mode(a) # median, average, etc...
我想知道是否可以在读取文件并更新 a 时动态计算模式,而不是必须将这些值保存在 a
中(因此内存可能非常大)每次我读新行时都使用单个值,即增量计算众数、中位数和平均值。所以最后我会得到a = [mode,median,average]
。
最佳答案
如果输入数字集来自相当小的值域(如您的示例中所示),您可以使用 Counter
来计算当它们经过时您看到的每个值的数量。从那个 Counter
中,您可以轻松获得众数,并且只需做一些工作即可获得中位数。动态计算平均值很容易,不需要计数器
:只需保留运行总计和运行计数即可。
关于Python 3.4 计算众数、读取文件的中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39361434/