【发布时间】:2021-05-15 13:09:11
【问题描述】:
这个问题和Block mean of numpy 2D array有关(其实标题几乎一样!)除了我的情况是一个概括。我想将一个二维数组分成两个方向的子块,并在块上取平均值。 (链接的示例仅将数组一维划分)。
因此,如果我的数组是这样的:
import numpy as np
a=np.arange(16).reshape((4,4))
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
如果我的子块大小为 2x2,那么我想要的答案是
array([[ 2.5, 4.5],
[10.5, 12.5]])
我能想到的唯一方法是一次仔细地重塑一个维度:
np.mean(np.mean(a.reshape((2,2,-1)),axis=1).reshape((-1,2,2)),axis=2)
这给出了正确的解决方案,但有点令人费解,我想知道是否有更简洁的代码来做同样的事情,也许是一些我不知道的 numpy 阻塞函数?
【问题讨论】: