我正在使用一个名为Gradedata.txt的txt文件,它看起来像这样:

Sarah K.,10,9,7,9,10,20,19,19,45,92
John M.,9,9,8,9,8,20,20,18,43,95
David R.,8,7,7,9,6,18,17,17,40,83
Joan A.,9,10,10,10,10,20,19,20,47,99
Nick J.,9,7,10,10,10,20,20,19,46,98
Vicki T.,7,7,8,9,9,17,18,19,44,88


我正在寻找每列的平均值。每个列都有其自己的标题(按顺序排列作业1,作业2等)。我正在尝试做的事情应该看起来像这样:

Homework #1        8.67
Homework #2        8.17
Homework #3        8.33
Homework #4        9.33
Homework #5        8.83
Quiz #1           19.17
Quiz #2           18.83
Quiz #3           18.67
Midterm #1        44.17
Final #1          92.50


这是我尝试完成此任务的尝试:

with open("GradeData.txt", "rtU") as f:
    columns = f.readline().strip().split(" ")
    numRows = 0
    sums = [0] * len(columns)

    for line in f:

        if not line.strip():
            continue

        values = line.split(" ")
        for i in xrange(len(values)):
            sums[i] += int(values[i])
        numRows += 1

    for index, summedRowValue in enumerate(sums):
        print columns[index], 1.0 * summedRowValue / numRows


我遇到错误,而且我意识到我必须给每个作业平均数命名。在这里需要一些帮助。我很感激。

最佳答案

numpy可以一口气咀嚼一下:

>>> np.loadtxt('Gradedata.txt', delimiter=',', usecols=range(1,11)).mean(axis=0)
array([  8.66666667,   8.16666667,   8.33333333,   9.33333333,
         8.83333333,  19.16666667,  18.83333333,  18.66666667,
        44.16666667,  92.5       ])

关于python - 从列中找到平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35074382/

10-14 17:59
查看更多