【问题标题】:Mean of multi level nested lists in pythonpython中多级嵌套列表的平均值
【发布时间】:2021-06-08 14:01:12
【问题描述】:

我有一个这样的列表

b= [
    [
        [[1],[2],[3]],
        [[4],[5],[6]],
        [[7],[8],[9]]
        ],
    [
        [[1],[2],[3]],
        [[4],[5],[6]],
        [[7],[8],[9]]
        ], 
    [
        [[1],[2],[3]],
        [[4],[5],[6]],
        [[7],[8],[9]]
        ]
]

这个列表最多可以有 10 个嵌套列表(这里我们只看到 3 个)。 我想以这样的方式平均这个列表,最终,我有

b= [
        [[1],[2],[3]],
        [[4],[5],[6]],
        [[7],[8],[9]]
        ]

请注意,第一个嵌套列表的第一个元素是所有其他嵌套元素的平均值。更准确地说,所有这些都应该是平均的。那么所有的 2 应该一起平均,一直持续到 9。最后,我必须保留上面显示的结构。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • @Raskayu 我已经尝试了 3 个嵌套级别的循环,这需要大量的空间和时间。我尝试过使用 zip 功能,但我注意到 zip 可以工作到 2 级,而不是 3 级。
  • 我可以帮我重新开始

标签: python list average nested-lists


【解决方案1】:

numpy 在这种情况下是你的朋友。如果我们将b 转换为np.array,它的形状为(3, 3, 3, 1)1 这里指的是你的内部列表的长度。我们可以沿第一个轴使用mean 方法来获得答案(您可以将其转换回列表,但如果您进行更多分析,您可能希望坚持使用numpy)。

import numpy as np

answer = np.array(b).mean(axis=0).tolist()

answer 在哪里

[
 [[1.0], [2.0], [3.0]],
 [[4.0], [5.0], [6.0]], 
 [[7.0], [8.0], [9.0]]
]

如果您想将答案保留为整数,则可以显式请求数组为 int 类型:

np.array(b).mean(axis=0).astype(int).tolist()

【讨论】:

    猜你喜欢
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多