Python/numpy索引E

2024-10-02 12:35:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面修改过的一段代码,这是模仿MatLab的一段代码,效果不错

import numpy as np
import math

dt = 1e-2;                      # time step
t = np.arange(0, 7, dt)         # t

mt=2
nt=2

rho=np.zeros((2,2,2,2))

Pe=np.array([[1,0],[0,0]])
Sm=np.array([[0,0],[1,0]])
Sz=np.array([[1,0],[0,- 1]])
Sy=np.array([[0,- 1j],[1j,0]])
Sx=[[0,1],[1,0]]

exp_Sz=np.zeros((2,2,len(t)))
exp_Sy=np.copy(exp_Sz)
exp_Sx=np.copy(exp_Sz)
exp_Pe=np.copy(exp_Sz)


for indx in (1,mt):
    for jndx in (1,nt):
        exp_Sz[indx,jndx,1]=np.trace(rho[:,:,indx,jndx] * Sz)
        exp_Sy[indx,jndx,1]=np.trace(rho[:,:,indx,jndx] * Sy)
        exp_Sx[indx,jndx,1]=np.trace(rho[:,:,indx,jndx] * Sx)
        exp_Pe[indx,jndx,1]=np.trace(rho[:,:,indx,jndx] * Pe)

但我得到以下错误

exp_Sz[indx,jndx,1]=np.trace(rho[:,:,indx,jndx] * Sz)
IndexError: index 2 is out of bounds for axis 3 with size 2

我不确定错误是什么。你知道吗

任何帮助都将不胜感激, 谢谢!你知道吗


Tags: 代码importfornpdttracearraype
1条回答
网友
1楼 · 发布于 2024-10-02 12:35:51
for indx in (1,mt):
    for jndx in (1,nt):
         # etc

上面的嵌套循环迭代两个元素元组,只包含元素1mt(外循环)以及1nt(内循环)。你知道吗

您可能希望迭代range(mt)range(nt)。你知道吗

注意numpy数组是基于0索引的。你知道吗

相关问题 更多 >

    热门问题