Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在已经具有复杂数据类型的数组的对角线中生成复数?_Python_Numpy - Fatal编程技术网

Python 如何在已经具有复杂数据类型的数组的对角线中生成复数?

Python 如何在已经具有复杂数据类型的数组的对角线中生成复数?,python,numpy,Python,Numpy,我定义了一个复杂的零矩阵。如何生成(-1/3)到1/3范围内的随机数作为对角元素。我该怎么做呢。我得到了一个无法将复数转换为浮点的错误。我试图更改数据类型,但仍然出现此错误 `H = np.reshape(np.zeros((81),dtype=complex),(9,9)) #rf = np.arange(len(rf),dtype=complex) rf = np.random.uniform(complex(-1./3.),complex(1./3.))` np.random.unifo

我定义了一个复杂的零矩阵。如何生成(-1/3)到1/3范围内的随机数作为对角元素。我该怎么做呢。我得到了一个无法将复数转换为浮点的错误。我试图更改数据类型,但仍然出现此错误

`H = np.reshape(np.zeros((81),dtype=complex),(9,9))
#rf = np.arange(len(rf),dtype=complex)
rf = np.random.uniform(complex(-1./3.),complex(1./3.))`
np.random.uniform()。但是,只要您只需要沿着主对角线的实数,就可以自由地将
float
s分配给复数矩阵,并且它们将自动转换为虚数部分为零:

H = np.zeros((9,9), dtype=np.complex)
rf = np.random.uniform(-1/3, 1/3, 9)
np.fill_diagonal(H, rf)
如果你也想要一个虚部,你可以创建两组随机数,然后将它们相加(因为实数和虚部位于正交轴上,它们不会相互“干扰”)

H = np.zeros((9,9), dtype=np.complex)
rf = np.random.uniform(-1/3, 1/3, 9) + 1j*np.random.uniform(-1/3, 1/3, 9)
np.fill_diagonal(H, rf)
另一方面,还可以看看如何不需要将全零矩阵创建为一维结构,然后对其进行重塑。
np.zeros()
如果传递的是一个
元组而不是一个数字,则接受多个维度。

np.random.uniform()
不适用于复数,只适用于实数(即
float
s)。但是,只要您只想要沿着主对角线的实数,您就可以自由地将
float
s分配给复数矩阵,并且它们将自动转换为虚数部分为零:

H = np.zeros((9,9), dtype=np.complex)
rf = np.random.uniform(-1/3, 1/3, 9)
np.fill_diagonal(H, rf)
如果你也想要一个虚部,你可以创建两组随机数,然后将它们相加(因为实数和虚部位于正交轴上,它们不会相互“干扰”)

H = np.zeros((9,9), dtype=np.complex)
rf = np.random.uniform(-1/3, 1/3, 9) + 1j*np.random.uniform(-1/3, 1/3, 9)
np.fill_diagonal(H, rf)

另一方面,还可以看看如何不需要将全零矩阵创建为一维结构,然后对其进行重塑。
np.zeros()
如果传递的是一个
元组而不是一个数字,则接受多个维度。

是否希望在实轴上均匀分布?因此,数字中没有添加虚部?H的非对角元素是复杂的。因此,必须在rf中添加虚部吗?我想沿着H生成从-1/3到1/3的随机数对角线。这些将是实数,也就是说,没有虚部?好的。这意味着我需要加虚部。不管它是零。对吗?你想在实轴上均匀分布吗?因此,没有虚部加在数字上?H的非对角线元素是复杂的。那么在rf?i中必须加虚部吗想要沿着对角线生成从-1/3到1/3的随机数。这些是实数,也就是说,没有虚部?好的。这意味着我需要加虚部。不管它是零。对吗?