python 中多层嵌套列表的平均值

Mean of multi level nested lists in python

我有一个这样的列表

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。最后,我必须保留上面显示的结构。

在这种情况下,

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()