如何将复数元素乘以 numpy 中的浮点数?

How to multiply the complex elements by float numbers in numpy?

import numpy as np
beta= 0.9
A=[1+1j,2+2j]   
real=np.zeros((1,2))
for i in range(1):
   for l in range(2):
       real[i,j] = real[i,j]-beta*A[i,j]

我不熟悉numpy中不同类型数组的计算。我怎样才能使代码工作?

你的原始代码的问题是

的结果
real[i, j] - beta * A[i, j]

会很复杂,但是您使用 np.zeros 创建了 real,这将为您提供一个 float64 数组,除非您明确指定不同的数据类型。由于没有安全的方法将复数值转换为浮点数,因此对 real[i, j] 的赋值将引发 TypeError.

解决该问题的一种方法是使用复杂的数据类型初始化 real

real = np.zeros((1, 2), dtype=np.complex)

如果你使 A 成为一个 numpy 数组,你可以使用广播一次性完成乘法,而无需预先分配 real 且无需循环:

import numpy as np

beta = 0.9
A = np.array([1 + 1j, 2 + 2j])
real = -beta * A

print(repr(real))
# array([-0.9-0.9j, -1.8-1.8j])

看起来您可能会从阅读一些示例中受益 here