'How do I get the imaginary part (or real part) of an array in Python?
I have trouble with my N qubit wavefunction. I try to prepare a state psi = a|0> + b*exp(2i\pi\theta)|1>, and I wanted to check if the values for b*exp(2i\pi\theta) were well distributed.
Here is how I got my wavefunction :
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]
I then used this line to get an array with only the y's and tried to plot them on the complex plane :
psi2 = psi[:,1]
plt.plot(psi2.real,psi2.imag)
I can't grasp why it doesn't plot the imaginary part and I just get :
Solution 1:[1]
You need to make the output array psi "complex aware". An easy way is to fill it with complex values instead of None objects:
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
Now the .real and .imag attributes should work as expected.
plt.plot(psi2[:,1].real,psi2[:,1].imag, '.')
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | MB-F |

