在numpy中创建二维复数数组



我希望创建一个任意大小的NxN复数的2D数组。因此(为了简单起见)一个N=3的数组的形式可能是

[
[0.0 + 0.0j, 0.0 + 1.0j, 0.0 + 2.0j]
[1.0 + 0.0j, 1.0 + 1.0j, 1.0 + 2.0j]
[2.0 + 0.0j, 2.0 + 1.0j, 2.0 + 2.0j]
]

(实际上N是>3).我可以使用例如np.linspace()创建一个1D数组。是否有类似的工具来生成2D图像?我想象N的数量级为50或100,实部和虚部的范围为-2np。PI到2np。PI或类似值

你可以在这里使用广播:

N=5
np.arange(N)[:,None] + np.complex('j')* np.arange(N)

输出:

array([[0.+0.j, 0.+1.j, 0.+2.j, 0.+3.j, 0.+4.j],
[1.+0.j, 1.+1.j, 1.+2.j, 1.+3.j, 1.+4.j],
[2.+0.j, 2.+1.j, 2.+2.j, 2.+3.j, 2.+4.j],
[3.+0.j, 3.+1.j, 3.+2.j, 3.+3.j, 3.+4.j],
[4.+0.j, 4.+1.j, 4.+2.j, 4.+3.j, 4.+4.j]])

或者在你的情况下:

N=50
x = np.linspace(-2,2,N) * np.pi
out = x[:,None] + np.complex('j') * x