numpy中是否有一种方法可以计算3d数组中每个2d数组的均值?

时间:2020-01-12 10:35:39

标签: python numpy

例如:

import numpy as np

a = np.array([[[1,2,3],[1,2,3]],[[4,5,6],[7,8,7]]])

print(a.shape)
# (2, 2, 3)

因此,在每个2d网格(上面的示例中为3个网格)上,我都希望计算均值:

mean = [np.mean(a[:, :, i]) for i in range(3)]
print(mean)
# [3.25, 4.25, 4.75]

在numpy中是否有一种方法可以实现这一目标?

我尝试在轴上使用均值,但结果与预期不符。

1 个答案:

答案 0 :(得分:1)

您可以使用np.mean(axis = ...)并指定尺寸的元组来进行平均计算

a.mean(axis=tuple(range(len(a.shape) - 1)))

这将计算除最后一个坐标轴外的所有尺寸/轴的均值(请注意,轴索引的范围如何从0len - 1(不包括),从而忽略了最后一个坐标轴。


此方法可扩展到更深的数组。例如,如果您有一个形状为(2, 6, 5, 4, 3)的数组,它将以a.mean(axis=(0, 1, 2, 3))的形式计算均值,从而为您提供3个均值的数组(对应于最后一个维度中的3个元素)