例如:
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中是否有一种方法可以实现这一目标?
我尝试在轴上使用均值,但结果与预期不符。
答案 0 :(得分:1)
您可以使用np.mean(axis = ...)
并指定尺寸的元组来进行平均计算
a.mean(axis=tuple(range(len(a.shape) - 1)))
这将计算除最后一个坐标轴外的所有尺寸/轴的均值(请注意,轴索引的范围如何从0
到len - 1
(不包括),从而忽略了最后一个坐标轴。
此方法可扩展到更深的数组。例如,如果您有一个形状为(2, 6, 5, 4, 3)
的数组,它将以a.mean(axis=(0, 1, 2, 3))
的形式计算均值,从而为您提供3个均值的数组(对应于最后一个维度中的3个元素)