在 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 时需要帮助 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
1145 Hashing - Average Search Time
算法最坏,平均和最佳情况(Worst, Average and Best Cases)-------geeksforgeeks 翻译
1145 Hashing - Average Search Time (25 分)难度: 一般 / 知识点: 哈希表平均查找时间