我对编程颇为陌生,所以我很抱歉如果这是一个经典而平凡的问题。我有一个100x100
2D值数组,这是通过matplotlib
绘制的。在此图像中,每个单元格的值(范围从0.0
到1.0
)和ID(从左上角开始的范围为0
到9999
)。我想通过使用2×2的移动,其产生两个字典窗口采样矩阵:如何在Python中使用2x2数组来创建一个巨大的二维数组来创建字典? (Python的模板算法)
- 第一词典:键表示4个细胞的交点;该值表示具有4个相邻单元的ID的元组(参见下图 - ,该交点由“N”表示);
- 第2个字典:该键代表4个单元格的交集;该值代表4个相邻单元的平均值(见下图)。
在下面的例子(左上面板),其中N具有ID = 0时,第一词典将产生 {'0': (0,1,100,101)}
由于细胞被编号为0至99朝向右手侧和0至9900,步骤= 100,向下。第二个字典将产生{'0': 0.775}
,因为0.775是N的4个相邻单元的平均值。当然,这些字典必须具有与我在2D阵列上具有的“交集”一样多的密钥。
这个如何实现?在这种情况下,字典是最好的“工具”吗?感谢你们!
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]
...
我不知道这是否可以帮助,但至少我可以告诉你所描述的通常被称为模板算法,它是某种二维有限冲击响应滤波器。如果你有'S'样本,并且给定了你的模式,你应该考虑遍历矩阵从1到S(而不是从0到S)并且应用你描述的任何操作。 – Emilien
这是一个开始:)谢谢! – FaCoffee