在 python 中查找 AVERAGE 时需要帮助 [重复]

Posted

技术标签:

【中文标题】在 python 中查找 AVERAGE 时需要帮助 [重复]【英文标题】:Need help on finding AVERAGE in python [duplicate] 【发布时间】: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

【问题讨论】:

reduce(lambda x, y: x + y, l) / len(l) @GrijeshChauhan 请不要建议reduce,因为你可以使用sum @jamylak :) :)..同意,谢谢! :) @LevLevitsky 是的......不太清楚为什么再次被问到。无论如何,它必须是课程/作业的一部分,但***.com/questions/16522767/… 要求更好 - 所以建议 OP 阅读那个... 你的代码我看了好几遍,不知道你的代码和变量是什么意思。 【参考方案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 的答案会更相称)。

【讨论】:

以上是关于在 python 中查找 AVERAGE 时需要帮助 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

average在python中的用法

1145 Hashing - Average Search Time

在 PDF 文件中查找文本位置

算法最坏,平均和最佳情况(Worst, Average and Best Cases)-------geeksforgeeks 翻译

1145 Hashing - Average Search Time (25 分)难度: 一般 / 知识点: 哈希表平均查找时间

查找工具locate和find