【问题标题】:How to find the average of values in a .txt file如何在 .txt 文件中查找值的平均值
【发布时间】:2013-11-21 03:01:42
【问题描述】:

我需要找到 .txt 文件中给出的值的最小值、最大值和平均值。我已经能够找到最小值和最大值,但我正在努力寻找平均值。我没有编写任何代码来确定平均值,因为我不知道从哪里开始。我当前的代码是:

def summaryStats():
    filename = input("Enter a file name: ")
    file = open(filename)
    data = file.readlines()
    data = data[0:]
    print("The minimum value is " + min(data))
    print("The maximum value is " + max(data))

我需要能够返回这些值的平均值。截至目前,.txt 文档具有以下值:

893
255
504

我很难找到这些的平均值,因为我试图找到总和的每一种方法我的结果都是 0。

谢谢 (对不起,我只是在学习处理文件)

【问题讨论】:

    标签: python file python-3.x


    【解决方案1】:

    您应该首先将从文件检索的数据转换为整数,因为您的数据列表包含字符串而不是数字。并且转换为整数后的平均值很容易找到:

    为什么需要转换为 int?

    >>> '2' > '10'  #strings are compared lexicographically
    True
    

    代码:

    def summaryStats():
        filename = input("Enter a file name: ")
        with open(filename) as f:
            data = [int(line) for line in f]
    
        print("The minimum value is ", min(data))
        print("The maximum value is ", max(data))
        print("The average value is ", sum(data)/len(data))
    

    输出:

    Enter a file name: abc1
    The minimum value is  255
    The maximum value is  893
    The average value is  550.6666666666666
    

    【讨论】:

    • 可能函数应该只接收文件名,调用代码应该弄清楚如何从用户那里接收文件名。命令行参数通常比交互式输入更加用户友好,这有点自相矛盾。
    • @tripleee 没错,我会做类似的事情。 :)
    【解决方案2】:

    不要重新发明轮子,使用numpy 它需要一些说明。您可以将一个txt文件导入一个numpy数组,然后使用内置函数执行您想要的操作:

    >>> import numpy as np
    >>> data = np.loadtxt('data.txt')
    >>> np.average(data)
     550.666666667
    >>> np.max(data)
     893.0
    >>> np.min(data)
     255.0
    

    【讨论】:

    • 对于可能非常简单的要求,这可能会产生很多的开销。如果不了解更多需求,我不会推荐 numpy。
    • 对不起,我不知道 numpy 函数,我还没有遇到过。
    • Numpy 是一个非常流行的第三方库,所以如果你想用 Python 做一些数字的事情,至少值得快速回顾一下。仅仅读入并划分一个数字列表,这太过分了。但如果你想做更多,那么额外的学习曲线可能非常值得。
    猜你喜欢
    • 2014-04-20
    • 2018-09-15
    • 2017-02-18
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 2021-12-22
    • 2021-02-02
    • 2018-07-12
    相关资源
    最近更新 更多