Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数组中查找平均值_Python - Fatal编程技术网

Python 在数组中查找平均值

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

我试着做一个函数,从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
    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
根据目前的数据

  • 将列表数据结构转换为字典
  • 为此使用
    收集
    模块
  • 迭代字典中的每个项目并计算平均分数
  • 演示:

    导入集合 >>>学生记录=集合.defaultdict(列表) >>>数据=['Name:','John','Score:','6'],['Name:','John','Score:','8'],['Name:','John','Score:','6'] >>>对于数据中的i: ... 学生记录[i[1]]。附加(int(i[3])) ... >>>学生档案 defaultdict(,{'John':[6,8,6]}) >>>对于student_record.items()中的i,j: ... 打印“姓名:%s,分数:%s,平均值:%s”%(i,j,浮动(总和(j))/len(j)) ... 姓名:约翰,分数:[6,8,6],平均值:6.667 >>>
    将输入结构更改为列表的字典

    >>> 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:检查以下所有答案。在代码中定义
    数据
    变量的位置?您正在使用
    数据
    变量;这行中的e
    length=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