python / numpy - 对矩阵元素进行分组并构建字典

python / numpy - group matrix elements and build dictionary

我有两个名为 M1 和 M2 的 numpy 方阵:

M1 = np.matrix('0 1 2 3; 4 5 6 7; 8 9 10 11; 12 13 14 15')

M2 = np.matrix('100 200; 300 400')

我想对 M1 的 2x2 元素进行分组,并将这些元素分配给 M2 的相应元素。例如,M1 的前四个元素分组应该是:

g1 = [0,1,4,5]

赋值给M2的值0。这样字典就会显示为 {M1 value: M2 value}:

dict1 = {0:100,1:100,4:100,5:100}

等所有矩阵。最终字典将是:

dict = {0:100,1:100,4:100,5:100,
        2:200,3:200,6:200,7:200,
        8:300,9:300,12:300,13:300,
        10:400,11:400,14:400,15:400}

由于原始矩阵非常大,我正在寻找一些快速 numpy/scipy 例程。

编辑:更改 M2 的值以澄清问题。

EDIT2:M1和M2总是正方形,M2的lines/columns个数总是M1的一半

我知道你要求一些 numpy/scipy 例程。所以对于您的目的来说,这可能不够快:

sh = M2.shape
dic = {M1[2*m+r, 2*n+c]: M2[m, n] for r in xrange(2) for c in xrange(2) for m in xrange(sh[0]) for n in xrange(sh[1])}
print dic
### {0: 100, 1: 100, 2: 200, 3: 200, 4: 100, 5: 100, 6: 200, 7: 200, 8: 300, 9: 300, 10: 400, 11: 400, 12: 300, 13: 300, 14: 400, 15: 400}

注意:最好不要将变量命名为 dict,因为它是 Python

中的内置类型