【问题标题】:python / numpy - group matrix elements and build dictionarypython / numpy - 对矩阵元素进行分组并构建字典
【发布时间】:2019-08-14 21:32:43
【问题描述】:

我有两个名为 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 的行数/列数总是 M1 的一半。

【问题讨论】:

  • 您能否使用 M2 的其他值来说明 M2 在您的最终字典中的作用?
  • 如果 M1 和 M2 的尺寸与您在此处使用的尺寸不同会怎样?
  • 嗨朱利安,只需添加更多信息的问题,希望对您有所帮助。

标签: python numpy matrix scipy


【解决方案1】:

我知道你要求一些 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 中的内置类型

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 2023-01-17
    相关资源
    最近更新 更多