【问题标题】:recursive Add python matrix sparse递归添加python矩阵稀疏
【发布时间】:2018-04-26 18:38:02
【问题描述】:

我是 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 [name of file]后,终端打印如下文本:

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

【问题讨论】:

    标签: python syntax-error sparse-matrix


    【解决方案1】:

    我没有仔细阅读你的整个代码,但看着它我可以说你的问题可能就在这里。

    n=3
    dim=2^n
    

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

    【讨论】:

    • tnx 但如果删除 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 代码有效
    • 如果您删除该部分,您的代码不会抱怨,但这并不意味着它可以工作。您的代码的问题是 dim=2^n 返回 1 而不是 8。
    • 感谢建议,我更改 dim=8,最实用,但现在问题出在添加:Sigs1= Sigs1+Sig1 File "/usr/lib/python3/dist-packages/ scipy/sparse/base.py",第 280 行,在 add
    猜你喜欢
    • 2018-08-07
    • 2017-12-16
    • 1970-01-01
    • 2023-04-10
    • 2017-06-15
    • 2021-11-18
    • 1970-01-01
    • 2018-01-19
    • 2015-04-26
    相关资源
    最近更新 更多