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
中的内置类型
我有两个名为 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