【发布时间】:2020-09-29 12:12:36
【问题描述】:
我有一个数字列表,我想从这个列表中再创建 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 次。那么任何人都可以帮助回答这个问题吗?
【问题讨论】:
-
您期待数据帧输出吗?
-
没有。只是在一个列表或一个 NumPy 数组中,因为我想用它来做进一步的计算。
-
但您的预期输出看起来像一个数据框。你能修改预期的输出吗?
-
是的,我知道它看起来像一个 DataFrame,但这只是为了更好的视觉效果。
-
您的输出示例也毫无意义。制作一个看起来像你想要的东西怎么样..我们可以猜测你想要什么..但这里的想法不是猜测..
标签: python arrays python-3.x list