【问题标题】:Need help on finding AVERAGE in python [duplicate]在 python 中查找 AVERAGE 时需要帮助 [重复]
【发布时间】:2013-05-08 17:22:44
【问题描述】:

字段 [quant] 在 (198) 和 (272) 范围内的数字的平均值是多少

quant
95
189
176
200
177
340
205
203
284
88
109
83
360
67
250
56
111
439
354
143

这是我尝试过的代码。以上是我需要从中找到平均值的 [quant] 字段。

word_file = open('300000a.csv','r')

firstLine = True 
for line in word_file:
    if firstLine:
        firstLine = False
        continue
    line = line.strip()
    line = line.split (",")
    field = int(line[0])

TotalMetalCount +=1
if  field >198 or field <272:
  metalCounts += 1
else:
    metalCounts = 1


countT +=1
if field >198 or field <272:
        count += 1

【问题讨论】:

  • @GrijeshChauhan 请不要建议reduce,因为你可以使用sum
  • @jamylak :) :)..同意,谢谢! :)
  • @LevLevitsky 是的......不太清楚为什么再次被问到。无论如何,它必须是课程/作业的一部分,但stackoverflow.com/questions/16522767/… 要求更好 - 所以建议 OP 阅读那个...
  • 你的代码我看了好几遍,不知道你的代码和变量是什么意思。

标签: python average


【解决方案1】:

您可以使用sum 计算列表的平均值并将其除以length

float(sum(my_list))/len(my_list)

如果您只需要抓取几个特定项目并根据这些项目提取平均值,您可以对数组进行切片。

print(float(sum(my_list[198:272]))/len(my_list[198:272]))

如果您有一个包含字符串而非整数的列表,则需要先将它们转换为整数列表,然后才能使用 sum。

my_list_of_integers = [int(i) for i in my_list[198:272]
print(float(sum(my_list_of_integers))/len(my_list_of_integers]))

【讨论】:

  • 看起来,@user2370772 需要获取的不是所有元素,而是其中的一部分。所以过滤列表会解释对他有好处
  • 啊。是的,这可能是真的。
  • 我尝试了第二个代码,它出现“错误”“无效语法”,它以红色显示 INT...我该怎么办
  • 我更新了示例以防您使用 Python3。
  • @eandersson,总和在 Python2 中表现不佳,因为它(可能)进行整数除法。将两者转换为单独浮动更安全。
【解决方案2】:

如果你要做的数字比这多得多,你应该使用numpy。然后会有多种方式将 CSV 文件作为数组读取。这些数组有一个.mean() 方法,它会按照您的想法执行。

(但如果你不做更多的数字,那么@eandersson 的答案会更相称)。

【讨论】:

    猜你喜欢
    • 2020-07-10
    • 2014-07-19
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    相关资源
    最近更新 更多