python - 如何在python的列表中找到平均值、最大值和最大值(类似于excel函数)?
问题描述
我有一个数字列表,从这个列表中,我想再创建 3 个列表,其中包含最大值、平均值和第五大数字。我的原始列表overdraw
是列表块,这意味着它里面有子块,每个块中有 6 个数字,总共有 3 个块或 6x3 矩阵或数组。
overdraw:
[[16,13,23,14,33,45],[23,11,54,34,23,76],[22,54,34,43,41,11]]
我知道如何计算这个列表中的最大值、平均值和 5 个最大值。但我想要一个特定的答案,比如我知道每个块的最大值、平均值和第 5 个最大值,但我希望它们被打印 4 次。我知道所有的价值观:
Max = [45, 76, 54]
Average = [24, 37, 34]
Largest(5th) = [14, 23, 22]
我的方法:
overdraw = [[16,13,23,14,33,45],[23,11,54,34,23,76],[22,54,34,43,41,11]]
x = [sorted(block, reverse=True) for block in overdraw] # first sort the whole list
max = [x[i][0] for i in range(0, len(x))] # for max
largest = [x[i][4] for i in range(0, len(x))] #5th largest
average = [sum(x[i])/len(x[i]) for i in range(0, len(x))] #average
print("max: ", max)
print("5th largest: ", largest)
print("average: ", average)
运行此代码后,您将获得相同的输出,但我希望以这种格式输出:
Average = [24, 24, 24, 24, 37, 37, 37, 37, 34, 34, 34, 34]
Max = [45, 45, 45, 45, 76, 76, 76, 76, 54, 54, 54, 54]
Largest(5th) = [14, 14, 14, 14, 23, 23, 23, 23, 22, 22, 22, 22]
如您所见,每个平均值、最大值和最大数字在各自的列表中打印 4 次。那么任何人都可以帮助这个答案吗?
解决方案
import pandas as pd
df = pd.DataFrame({
'OvIdx' : 3 * [range(4)],
'Average' : average,
'Max' : max, # should be renamed/assigned as max_ instead
'Largest(5th)': largest
}).explode('OvIdx').set_index('OvIdx').astype(int)
print(df)
这表明
Average Max Largest(5th)
OvIdx
0 24 45 14
1 24 45 14
2 24 45 14
3 24 45 14
0 36 76 23
1 36 76 23
2 36 76 23
3 36 76 23
0 34 54 22
1 34 54 22
2 34 54 22
3 34 54 22
从这里开始,您仍然可以进行所有您想要的计算和/或获取 NumPy 数组,执行df.values
.
根据您的评论,您还可以将您的列作为单独的实体,例如
>>> df.Average.tolist()
[24, 24, 24, 24, 36, 36, 36, 36, 34, 34, 34, 34]
>>> df.Max.tolist()
[45, 45, 45, 45, 76, 76, 76, 76, 54, 54, 54, 54]
>>> df['Largest(5th)'].tolist() # as string key since the name is a little bit exotic
[14, 14, 14, 14, 23, 23, 23, 23, 22, 22, 22, 22]
哪种方法开始有点矫枉过正,但可读性强。
推荐阅读
- css - 无法调整 mat-tree 中列表项的行高
- javascript - array.concat() 的问题
- java - 如何避免 JSON 响应中的子实体花括号?
- android - Navigation Lint 错误:此导航图未从任何布局文件中引用
- python - ipywidgets 小部件值不变
- mysql - 在 MySQL 的同一查询中更新和选择
- ios - 每五秒发出一次声音循环警报
- java - 由 org.springframework.beans.factory.BeanCreationException 导致成功安装 maven 的 Tomcat 战争部署错误
- sql - 将列转换为分组依据/计数
- javascript - 为什么我的 Mongo DB 没有捕获超过 1 个链接?