使用matplotlib在qiskit中可视化电路

4

我正在学习如何使用qiskit,并且正在使用jupyter笔记本,但每次尝试使用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'

我也尝试应用一个哈达玛门, 我得到了:

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 替代你现在的导入? - Frank
1
另外,你需要使用方括号来返回量子比特,而不是 circuit.h(qr(0)),即 circuit.h(qr[0]) - Frank
2个回答

0

看起来存在名称冲突。它正在使用from qiskit import circuit中的circuit,而不是circuit = ...

你可能只需要重启你的笔记本内核。


你能在一个新的笔记本中运行你发布的示例吗?像@Frank一样,我无法重现这个问题。 - luciano

0

尝试为电路变量使用另一个名称,现在Python认为您想让qiskit.circuit模块绘制某些内容。QuantumCircuit对象是具有绘制方法的对象。如果您同时调用这两个对象,您可以在此处看到它们,注意我在QuantumCircuit中放置了一个量子比特和经典比特,仅作为示例,您不需要在此处使用点号,这只是为了更清晰地说明问题,只运行circuit和QuantumCircuit(1,1)将产生相同的结果。

Difference between qiskit.circuit and qiskit.QuantumCircuit

如果您尝试使用不同的变量名称,您将获得所需的结果: Draw a Quantum Circuit

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

此外,您所有的导入语句可以合并为一个:

from qiskit import *

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接