如何在 Python 中获取数组的虚部(或实部)?

How do I get the imaginary part (or real part) of an array in Python?

我的 N 量子比特波函数有问题。我尝试准备状态 psi = a|0> + b*exp(2i\pi\theta)|1>,我想检查 b*exp(2i\pi\theta) 的值是否分布均匀。

这是我得到波函数的方法:

N = 100
psi = np.full([100, 2], None)
for i in range(N) :
x = np.random.random()
y = y = np.exp(2j*np.pi*np.random.random())*np.sqrt(1-x**2)
psi[i] = [x,y]

然后我用这条线得到一个只有 y 的数组,并试图在复平面上绘制它们:

psi2 = psi[:,1]
plt.plot(psi2.real,psi2.imag)

我不明白为什么它不绘制虚部,我只是得到:

Result of psi2 in the complex plane

您需要使输出数组 psi 具有“复杂意识”。一种简单的方法是用复杂的值而不是 None 个对象来填充它:

psi = np.full([100, 2], None)
print(psi.dtype)
# object  ... not good

psi = np.full([100, 2], 0j)
print(psi.dtype)
# complex128   ... numpy inferred the complex data type for psi

现在 .real.imag 属性应该可以正常工作了。

plt.plot(psi2[:,1].real,psi2[:,1].imag, '.')