【问题标题】:Visualizing circuits in qiskit with matplotlib使用 matplotlib 在 qiskit 中可视化电路
【发布时间】:2020-11-06 01:25:49
【问题描述】:

我正在学习如何使用 qiskit,并且我正在使用 jupyter notebook,但是每次我尝试使用属性 draw 来可视化电路时,我都会收到此错误:

import qiskit
from qiskit import *
from qiskit import IBMQ
qr = QuantumRegister(2)
cr = ClassicalRegister(2)
circuit = QuantumCircuit(qr, cr)
%matplotlib inline
circuit.draw(output='mpl')
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-bd220039ee1c> in <module>
----> 1 circuit.draw(output='mpl')

AttributeError: module 'qiskit.circuit' has no attribute 'draw'

我也尝试应用 Hadamard 门并得到:

circuit.h(qr(0))
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-59-c8b4318b743b> in <module>
----> 1 circuit.h(qr(0))

AttributeError: module 'qiskit.circuit' has no attribute 'h'

【问题讨论】:

  • 这段代码似乎对我有用,如果@luciano 建议这是一个导入问题,也许尝试from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit 而不是你现在拥有的导入?
  • 另外,你需要用方括号代替circuit.h(qr(0)),来返回量子位,即circuit.h(qr[0])

标签: python matplotlib qiskit


【解决方案1】:

似乎有名称冲突。它在from qiskit import circuit 中使用circuit 而不是circuit = ...

您可能只需要重新启动您的笔记本内核。

【讨论】:

  • 你可以只运行你在新笔记本中发布的示例吗?作为@Frank,我无法重现问题
【解决方案2】:

为您的电路变量尝试另一个名称,现在 python 认为您希望 qiskit.circuit 模块绘制一些东西。 QuantumCircuit 对象是具有绘制方法的对象。如果你同时调用这两个对象,你可以在这里看到这两个对象,注意我在 QuantumCircuit 中放置了一个量子位和经典位,只是每个示例你不需要这里的点,这只是为了让它更清楚,只是运行电路和 QuantumCircuit( 1,1) 分别会产生相同的结果。

如果您尝试不同的变量名,您会得到想要的结果:

当我尝试使用变量名电路时,它适用于我,但尝试使用描述性变量名,这些变量名也永远不会与您导入的包中的模块或类混淆。

您的所有导入语句也可以合并为 1:

from qiskit import *

星号允许您从 qiskit 导入所有内容,包括 IBMQ。它可以帮助您节省一两行代码。

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 2020-08-30
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2017-09-14
    • 2021-11-04
    相关资源
    最近更新 更多