In [141]: np.random.seed(0)
In [142]: a = np.random.rand(4,5,6,7,3)
In [143]: [a[...,i].mean() for i in range(a.shape[-1])]
Out[143]: [0.50479333735828591, 0.49485716677174307, 0.51110772176772712]
In [144]: np.mean(a, axis=tuple(range(a.ndim-1)))
Out[144]: array([ 0.50479334, 0.49485717, 0.51110772])
或者,我们可以重塑到2D,并沿着第一个轴找到mean-
In [145]: a.reshape(-1,a.shape[-1]).mean(0)
Out[145]: array([ 0.50479334, 0.49485717, 0.51110772])
2条答案
按热度按时间2vuwiymt1#
对于一般的ndarray,您可以创建一个元组来覆盖除与颜色通道对应的最后一个轴之外的所有轴,然后将其用于
axis
参数和np.mean
,如下所示-针对循环理解版本进行验证的样例运行-
或者,我们可以重塑到
2D
,并沿着第一个轴找到mean
-lh80um4z2#
对初学者(像我一样)的解释:我也有同样的问题,我花了一段时间才解决。基本上是为了处理图像:
有了这一点,你真正想说的是“我想要为每一张图像获取每个通道的高度和宽度,并计算它的平均值”。因此,形状(3)表示所有数据集中都有红色、蓝色和绿色的平均值。