Python 在数组中查找平均值
我试着做一个函数,从2d数组中获取零件,求平均值,然后打印出来 该数组如下所示:Python 在数组中查找平均值,python,Python,我试着做一个函数,从2d数组中获取零件,求平均值,然后打印出来 该数组如下所示: data = [['Name:','John','Score:','6'],['Name:','John','Score:','8'],['Name:','John','Score:','6']] 我怎样才能得到分数的平均值 编辑1: def average(): print("\n\nAverage Scores: ") length = len(data) ind = 0 da
data = [['Name:','John','Score:','6'],['Name:','John','Score:','8'],['Name:','John','Score:','6']]
我怎样才能得到分数的平均值
编辑1:
def average():
print("\n\nAverage Scores: ")
length = len(data)
ind = 0
data.sort(key=operator.itemgetter(1))
sav2 = []
while length != 0:
name = data[ind][1]
counted = sum(x.count(name) for x in log)
counting = counted
av = 0
while counting != 0:
av += int(data[ind][3])
ind += 1
counting -= 1
av = str(av/counted)
sav2.append(("Name: "+name+" Average Score: "+av).split())
length -= int(counted)
sav2.sort(key=lambda x: float(x[4]), reverse = True)
for word in sav2:
wordJoin = ' '.join(word)
print(wordJoin)
这里有一些代码是我从一个朋友那里借来的,它工作得很好,但我不懂。你们有什么可以做的吗?你们应该向其他人展示你们的任何试验。此外,正如托比亚斯•克在评论中提到的,你们可能应该使用字典 快速回答您的问题:
summation, count = 0, 0
for i in data:
summation += float(i[3])
count += 1
averageResult = summation / count
对于此特定示例:
sum([int(i[3]) for i in data])/3.0
您可以使用float(len(data))
如果数组中的数字不是整数,则:
sum([float(i[3]) for i in data])/len(data)
你可以找到现在的平均值
>>>sum([int(i[-1]) for i in data])/float(len(data))
6.666666
根据目前的数据
收集
模块将输入结构更改为列表的字典
>>> import collections
>>> student_record = collections.defaultdict(list)
>>> data = [{'Name':'John','Score':'6'},{'Name':'John','Score':'8'},{'Name':'John','Score':'6'}]
>>> for i in data:
... student_record[i["Name"]].append(int(i["Score"]))
...
>>> student_record
defaultdict(<type 'list'>, {'John': [6, 8, 6]})
>>> for i,j in student_record.items():
... print "Name: %s, Score: %s, Avg: %s"%(i, j, float(sum(j))/len(j))
...
Name: John, Score: [6, 8, 6], Avg: 6.66666666667
导入集合
>>>学生记录=集合.defaultdict(列表)
>>>数据=[{'Name':'John','Score':'6'},{'Name':'John','Score':'8'},{'Name':'John','Score':'6'}]
>>>对于数据中的i:
... 学生记录[i[“姓名”]。附加(int(i[“分数”]))
...
>>>学生档案
defaultdict(,{'John':[6,8,6]})
>>>对于student_record.items()中的i,j:
... 打印“姓名:%s,分数:%s,平均值:%s”%(i,j,浮动(总和(j))/len(j))
...
姓名:约翰,分数:[6,8,6],平均值:6.667
我认为最好用尽可能通用的解决方案来解决这类问题,因为它最好地展示了背后的概念。考虑到这一点: 我们需要一个脚本,它接受2D数组并返回特定列的平均值。因此,我们的函数应该接受2D数组和列索引
def averageOfColumn(people, columnIndex):
#code
return answer;
平均值定义为总和除以n,所以我们要求一列的总和,然后除以人数。列的和可以如下所示
answer = 0
for person in people:
answer += person[columnIndex]
如果我们把这个总数除以人数,我们就有了答案
def averageOfColumn(people, columnIndex):
answer = 0;
for person in people:
answer += person[columnIndex];
return answer / len(people);
我们还没有完全完成,因为您的数据是以字符串的形式给出的,我们希望它是一个浮点或整数(因此我们可以对它进行数学运算),所以我们必须稍微修改一下,并将“数据”转换为数字类型
def averageOfStatistic(people, columnIndex):
summation = 0;
for person in people:
summation += float(person[columnIndex]);
return summation / len(people);
或者,更笼统地说:
def averageOfStatistic(data, columnIndex):
summation = 0;
for point in data:
summation += float(point[columnIndex]);
return summation / len(data);
所以最后我们有
def averageOfStatistic(data, columnIndex):
summation = 0;
for point in data:
summation += float(point[columnIndex]);
return summation / len(data);
data = [['Name:','John','Score:','6'],['Name:','John','Score:','8'],['Name:','John','Score:','6']]
print averageOfStatistic(data, 3); # print average score
请向我们展示测试用例(定义输入的预期输出)和您解决问题的尝试。@VivekSable这正是我所希望的。@Pokeguy35:检查以下所有答案。在代码中定义
数据变量的位置?您正在使用数据
变量;这行中的elength=len(数据)
。只需发布数据
值,即输入您的问题或通过的代码vivekbsable@gmail.com. 先用简单的解决方案,上面的代码对初学者来说太多了,不知道你们可以借用代码!
def averageOfStatistic(data, columnIndex):
summation = 0;
for point in data:
summation += float(point[columnIndex]);
return summation / len(data);
data = [['Name:','John','Score:','6'],['Name:','John','Score:','8'],['Name:','John','Score:','6']]
print averageOfStatistic(data, 3); # print average score