如何得到多维np中二维矩阵的厄米特矩阵.例如F有(3,2,2,2)个形状,前两个维度表示某一类别的项,数据是一个存在于后两个维度(2*2)的二维矩阵:

import numpy as np
F=np.array([[[[  1+2.j, 2-1.j],[1+2.j, 2-1.j]],
    [[  0,  2+1.j],[0, 3-1.j]]],

   [[[  1+2.j, 2-1.j],[ 1+2.j, 2-1.j]],
    [[  0,  2+1.j],[ 0, 3-1.j]]],

  [[[  1+2.j, 2-1.j],[ 1+2.j, 2-1.j]],
    [[  0,  2+1.j],[ 0, 3-1.j]]]])

因此,输出应该是所有2*2矩阵的厄米特矩阵,而输出应该具有与F相同的形状:

F_Herm=np.array([[[[  1-2.j, 1-2.j],[2+1.j, 2+1.j]],
        [[  0,  0],[2-1.j, 3+1.j]]],

       [[[  1-2.j, 1-2.j],[2+1.j, 2+1.j]],
        [[  0,  0],[ 2-1.j, 3+1.j]]],

      [[[  1-2.j, 1-2.j],[ 2+1.j, 2+1.j]],
        [[  0,  0],[2-1.j, 3+1.j]]]])

因此F_Herm.Shape应该等于(3,2,2,2)

推荐答案

你可以计算转置的共轭

# Just an example
A=(np.arange(24)+1j*np.arange(24)).reshape(3,2,2,2)

# Swap 2 tast axes (so transpose each 2D matrix A[i,j]), and conjugate
AH = np.swapaxes(-1,-2).conj()

这里

A=array([[[[ 0. -0.j,  2. -2.j],
         [ 1. -1.j,  3. -3.j]],

        [[ 4. -4.j,  6. -6.j],
         [ 5. -5.j,  7. -7.j]]],


       [[[ 8. -8.j, 10.-10.j],
         [ 9. -9.j, 11.-11.j]],

        [[12.-12.j, 14.-14.j],
         [13.-13.j, 15.-15.j]]],


       [[[16.-16.j, 18.-18.j],
         [17.-17.j, 19.-19.j]],

        [[20.-20.j, 22.-22.j],
         [21.-21.j, 23.-23.j]]]])

和AH

array([[[[ 0. -0.j,  2. -2.j],
         [ 1. -1.j,  3. -3.j]],

        [[ 4. -4.j,  6. -6.j],
         [ 5. -5.j,  7. -7.j]]],


       [[[ 8. -8.j, 10.-10.j],
         [ 9. -9.j, 11.-11.j]],

        [[12.-12.j, 14.-14.j],
         [13.-13.j, 15.-15.j]]],


       [[[16.-16.j, 18.-18.j],
         [17.-17.j, 19.-19.j]],

        [[20.-20.j, 22.-22.j],
         [21.-21.j, 23.-23.j]]]])

我相信,这就是你所期待的

适用于你的F(当然假设是j=1j)

F.swapaxes(-1,2).conj()
⇒
array([[[[1.-2.j, 1.-2.j],
         [2.+1.j, 2.+1.j]],

        [[0.-0.j, 0.-0.j],
         [2.-1.j, 3.+1.j]]],


       [[[1.-2.j, 1.-2.j],
         [2.+1.j, 2.+1.j]],

        [[0.-0.j, 0.-0.j],
         [2.-1.j, 3.+1.j]]],


       [[[1.-2.j, 1.-2.j],
         [2.+1.j, 2.+1.j]],

        [[0.-0.j, 0.-0.j],
         [2.-1.j, 3.+1.j]]]])

Python相关问答推荐

重命名变量并使用载体中的字符串存储 Select 该变量

如何将 map 数组组合到pyspark中每列的单个 map 中

当pip为学校作业(job)安装sourcefender时,我没有收到匹配的分发错误.我已经try 过Python 3.8.10和3.10.11

在后台运行的Python函数

定义同侪组并计算同侪组分析

Python:记录而不是在文件中写入询问在多文件项目中记录的最佳实践

即使在可见的情况下也不相互作用

当多个值具有相同模式时返回空

对于一个给定的数字,找出一个整数的最小和最大可能的和

从numpy数组和参数创建收件箱

Pandas - groupby字符串字段并按时间范围 Select

如何制作10,000年及以后的日期时间对象?

无法使用requests或Selenium抓取一个href链接

如何使用pytest来查看Python中是否存在class attribution属性?

Streamlit应用程序中的Plotly条形图中未正确显示Y轴刻度

如何从数据库上传数据到html?

如何在Python中找到线性依赖mod 2

用砂箱开发Web统计分析

如何合并两个列表,并获得每个索引值最高的列表名称?

基于形状而非距离的两个numpy数组相似性