递归加python矩阵稀疏

递归加python矩阵稀疏,python,syntax-error,sparse-matrix,Python,Syntax Error,Sparse Matrix,我是Python新手——我来自matlab。我正在尝试编译以下代码: import numpy as np from scipy import sparse n=3 dim=2^n sx = np.array([[0,1],[1,0]]) sy = np.array([[0,-1j],[1j,0]]) sz = np.array([[1,0],[0,-1]]) ssx= sparse.csr_matrix(sx) ssy= sparse.csr_matrix(sy) ssz= sparse.

我是Python新手——我来自matlab。我正在尝试编译以下代码:

import numpy as np
from scipy import sparse

n=3
dim=2^n

sx = np.array([[0,1],[1,0]])
sy = np.array([[0,-1j],[1j,0]])
sz = np.array([[1,0],[0,-1]])
ssx= sparse.csr_matrix(sx)
ssy= sparse.csr_matrix(sy)
ssz= sparse.csr_matrix(sz)


expon1=np.zeros((n,n))
for i in range(n-1):
    expon1[i,i]=1
    expon1[i+1,i]=1
expon1[0,n-1]=1
expon1[n-1,n-1]=1
expon2=np.identity(n)

Sigs1=sparse.csr_matrix(0,(dim, dim))
for j in range(n-1):
    Sig1=sparse.csr_matrix(1)
    for i in range(n-1):
        Sig1=sparse.kron(Sig1,ssx.power(expon1[i,j]))
    Sigs1= Sigs1+Sig1
运行
python3 sparse.py[文件名]
后,终端打印以下文本:

Traceback (most recent call last):
  File "sparse.py", line 31, in <module>
    Sigs1= Sigs1+Sig1
  File "/usr/lib/python3/dist-packages/scipy/sparse/compressed.py", line 341, in __add__
    raise ValueError("inconsistent shapes")
ValueError: inconsistent shapes
回溯(最近一次呼叫最后一次):
文件“sparse.py”,第31行,在
Sigs1=Sigs1+Sig1
文件“/usr/lib/python3/dist packages/scipy/sparse/compressed.py”,第341行,添加__
raise VALUE错误(“形状不一致”)
ValueError:形状不一致

我没有通读您的全部代码,但看看它,我可以说您的问题可能就在这里

n=3
dim=2^n

python中的这个
^
运算符用于按位异或,而这个
**
用于power。

我没有通读您的全部代码,但查看它,我可以说您的问题可能就在这里

n=3
dim=2^n

python中的这个
^
运算符用于按位异或,而这个
**
用于功率。

tnx但是如果删除范围(n-1)中j的Sigs1=sparse.csr_矩阵(0,(dim,dim)):范围(n-1)中i的Sig1=sparse.kron(Sig1,ssx.power(expon1[i,j]))Sigs1=Sigs1+Sig1如果您删除了该部分,则代码可以工作。您的代码不会抱怨,但并不意味着它可以工作。代码的问题是
dim=2^n
返回的是1而不是8。对于建议,我更改dim=8是最实际的,但现在问题出现在addtnx中的add:Sigs1=Sigs1+Sig1文件“/usr/lib/python3/dist packages/scipy/sparse/base.py”,第280行,但如果删除范围(n-1)中j的Sigs1=sparse.csr\u矩阵(0,(dim,dim)):Sig1=sparse.csr_矩阵(1)表示范围(n-1)内的i:Sig1=sparse.kron(Sig1,ssx.power(expon1[i,j]))Sigs1=Sigs1+Sig1如果删除该部分,代码不会抱怨,但并不意味着它可以工作。代码的问题是
dim=2^n
返回的是1而不是8。对于建议,我更改dim=8是最实际的,但现在问题出现在add:Sigs1=Sigs1+Sig1文件“/usr/lib/python3/dist packages/scipy/sparse/base.py”,add中的第280行