我对编程比较陌生,所以如果这是一个经典而琐碎的问题,我深表歉意。我有一个100x100
二维值数组,它是通过matplotlib
. 在此图像中,每个单元格都有其值(范围0.0
为1.0
)和 ID(范围0
为9999
从左上角开始)。我想通过使用产生两个字典的 2x2 移动窗口对矩阵进行采样:
- 第一个字典: key代表4个单元格的交集;该值表示具有 4 个相邻单元格 ID 的元组(见下图 -交点由 "N" 表示);
- 第二个字典: key代表4个单元格的交集;该值表示 4 个相邻单元格的平均值(见下图)。
在下面的示例(左上图)中,其中 N 的 ID=0,第一个字典将产生
{'0': (0,1,100,101)}
,因为单元格的编号为 0 到 99 朝向右侧,0 到 9900,步长 = 100,向下。第二个字典会产生{'0': 0.775}
,因为 0.775 是 N 的 4 个相邻单元格的平均值。当然,这些字典必须具有与二维数组上的“交叉点”一样多的键。
如何实现?在这种情况下,字典是最好的“工具”吗?谢谢你们!
PS: 我尝试了自己的方式,但我的代码不完整,错误,我无法理解它:
a=... #The 2D array which contains the cell values ranging 0.0 to 1.0
neigh=numpy.zeros(4)
mean_neigh=numpy.zeros(10000/4)
for k in range(len(neigh)):
for i in a.shape[0]:
for j in a.shape[1]:
neigh[k]=a[i][j]
...