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()
我有一个这样的列表
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()