将复数值分配给 Python 中的 Int 数组

Assigning Complex Values to an Int Array in Python

各位。我想创建一个大小为 1x1000 的随机数组,它将包含来自 0 to 3 的随机整数。然后我想在二维笛卡尔平面的不同位置分配这些数字。我使用实轴和虚轴作为我的 x 轴和 y 轴。当我尝试将其分配给 1j-1j 时,出现错误消息:

TypeError("can't convert complex to float")

你能帮帮我吗?

import numpy as np
from math import *

M = 4
N = 1000

firstsymbols = np.random.randint(M, size=N)
symbols = np.zeros(N)

for i in range(1,N):
    if (firstsymbols[i] == 0):
       symbols[i] = 1
    elif (firstsymbols[i] == 1):
       symbols[i] = 1j
    elif (firstsymbols[i] == 2):
       symbols[i] = -1
    else:
       symbols[i] = -1j

print(symbols)

您可以使用 broadcasting

创建一个 numpy 复数数组
1j * np.arange(10)

或者您可以保留一个二维数组,其中第一列是实部,第二列是虚部。