You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在多维NumPy数组中求解二维方阵的厄米特矩阵

对多维NumPy数组中的每个2×2方阵求厄米特矩阵

给定形状为(3, 2, 2, 2)的NumPy数组F,其中前两个维度代表类别条目,最后两个维度对应2×2的二维方阵。需要对每个2×2方阵计算其厄米特矩阵,且输出数组的形状需与原数组保持一致((3, 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]]]])

期望输出示例

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]]]])

解决方案

厄米特矩阵是矩阵的共轭转置,即先对矩阵转置,再对每个元素取复数共轭。针对多维数组,只需对最后两个维度(对应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_Herm = np.conj(F.transpose(0, 1, 3, 2))

# 验证输出形状
print(F_Herm.shape)  # 输出: (3, 2, 2, 2)

代码说明

  • F.transpose(0, 1, 3, 2):保持前两个维度(索引0和1)不变,交换最后两个维度(索引2和3),实现每个2×2方阵的转置。
  • np.conj():对转置后的数组中所有复数元素取共轭,得到厄米特矩阵。
  • 最终输出数组的形状与原数组完全一致,符合要求。

内容的提问来源于stack exchange,提问作者learning statistics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:15:39