代码之家  ›  专栏  ›  技术社区  ›  SuperCiocia

如何在python中“展平”张量积矩阵?

  •  2
  • SuperCiocia  · 技术社区  · 6 年前

    我从3x3阵列开始 m 张量积。

    我有一个3x3阵列,其中有3x3阵列,但实际上我想得到一个9x9阵列:

    import numpy as np
    
    m = np.array([[1. , 0.5, 0. ], [0.5, 1. , 0.5], [0. , 0.5, 1. ]])
    a = np.tensordot(m,m, axes=0)
    

    我试过 a.reshape(9,9) 但它没有做我想要的…还有别的主意吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   javidcf    6 年前

    我不确定我是否正确理解了这个问题,但我认为你可能想要的是:

    import numpy as np
    
    m = np.array([[1. , 0.5, 0. ], [0.5, 1. , 0.5], [0. , 0.5, 1. ]])
    a = np.tensordot(m, m, axes=0)
    a = a.transpose((0, 2, 1, 3)).reshape((9, 9))
    print(a)
    

    输出:

    [[1.   0.5  0.   0.5  0.25 0.   0.   0.   0.  ]
     [0.5  1.   0.5  0.25 0.5  0.25 0.   0.   0.  ]
     [0.   0.5  1.   0.   0.25 0.5  0.   0.   0.  ]
     [0.5  0.25 0.   1.   0.5  0.   0.5  0.25 0.  ]
     [0.25 0.5  0.25 0.5  1.   0.5  0.25 0.5  0.25]
     [0.   0.25 0.5  0.   0.5  1.   0.   0.25 0.5 ]
     [0.   0.   0.   0.5  0.25 0.   1.   0.5  0.  ]
     [0.   0.   0.   0.25 0.5  0.25 0.5  1.   0.5 ]
     [0.   0.   0.   0.   0.25 0.5  0.   0.5  1.  ]]