gpt4 book ai didi

python - 如何在python中获取二维列表中一行的平均值?

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:52 24 4
gpt4 key购买 nike

我是 Python 的新手,我正在处理一个二维列表,但不确定如何获取行的平均值。

例如我有这个列表:

myList = [[70, 80, 90], [30, 40, 50]]

我想得到第一行和第二行的平均值。

像这样:

(70 + 80 + 90)/3 = 80

(30 + 40 + 50)/3 = 40

我正在实现我的 print_student_average 函数,但我有点迷路了。请有人告诉我我做错了什么。

这是我的代码:

def main():
myList = [[70, 80, 90], [30, 40, 50]]

print(print_student_average(myList))
print_exam_average(myList)

def print_student_average(myList):

total_sum = [sum(i) for i in range(len(myList))]
average = total_sum/3

return average

def print_exam_average(myList):

col_totals = [ sum(x)/2 for x in zip(*myList) ]

for col in col_totals:
print("the average of the exam is: ", col)


main()

最佳答案

如果需要,可以使用 numpy封装及其功能mean .

要计算每个学生的平均分,给定myList,代码如下:

import numpy

def print_student_average(myList):
students_avg = numpy.mean(myList, axis=1)
for avg in students_avg:
print(avg)
return students_avg

请注意,axis=1 确定计算行的平均值。使用示例中提供的列表,输出为:

80.0
40.0

同样,您可以使用相同的 numpy 函数获得每次考试的平均分:

def print_exams_average(myList):
exams_avg = numpy.mean(myList, axis=0)
for avg in exams_avg:
print(avg)
return exams_avg

在这种情况下,axis=0 获取列的平均值,示例中提供的列表的结果是:

50.0
60.0
70.0

关于你的print_student_average中的问题,

 total_sum = [sum(i) for i in range(len(myList))]

是主要问题。 range返回从 0 到列表长度的整数列表,在示例中为 2。使用 for 语句,您可以从 range 迭代列表的每个值,然后您尝试对整数使用 sum,这不起作用,因为它不是列表。另一个答案中已经提供了更紧密地遵循您的代码的解决方案。

关于python - 如何在python中获取二维列表中一行的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com