我希望在NumPy中找到一个二维数组的块平均值。为了简单起见,让我们假设数组如下:
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])
我希望将这个数组分成3个大小为2x4的块,并找到所有三个块的平均值(以便平均值的形状为2x4)。第一个块由前4列组成,下一个块由接下来的4列组成,依此类推。所以我的块如下:
array([[0, 1, 2, 3],
[12, 13, 14, 15]])
array([[ 4, 5, 6, 7],
[16, 17, 18, 19]])
array([[ 8, 9, 10, 11],
[20, 21, 22, 23]])
我可以使用循环来完成这个任务,但我感觉首先将该数组通过
reshape
转换为3D数组,然后沿第三轴使用mean
方法对3D数组进行操作会更好。 这可能类似于这个问题。如果有这样的技巧存在,那么希望有人能够提供一个适合的Python命令,以完成均值计算而无需将其转换为3D数组。
如果没有,也希望有人能够提供一个适当的Python命令,以将2D转换为3D。
请提供您的见解,无论是使用循环还是使用上述命令,哪种方法在空间方面更有效。