为什么这段代码无法将复数转换为浮点数?或者我得到无效的语法

Why this code is getting cant convert complex to float? Or I get invalid syntax

import numpy as np
import math
freq2 = np.zeros(N)
freq2[2] = 1+(math.pi/2)j

快把我逼疯了...它指向复数 j 运算符

freq2[2] = 1+((math.pi)/2)j
SyntaxError: invalid syntax

然后这个说

freq2[2] = 1+2j

无法将复数转换为浮点数

如果你想在数组中放入一个复数,数组必须有正确的 dtype 开头:

In [17]: x = np.zeros(3, dtype=complex)                                         
In [18]: x                                                                      
Out[18]: array([0.+0.j, 0.+0.j, 0.+0.j])
In [19]: x[0] = 1 + np.pi/2*1j                                                  
In [20]: x                                                                      
Out[20]: array([1.+1.57079633j, 0.+0.j        , 0.+0.j        ])

或者从值列表创建一个复杂的数组:

In [21]: np.array([1+np.pi/2*1j, 0, 1, 23j])                                    
Out[21]: array([1. +1.57079633j, 0. +0.j        , 1. +0.j        , 0.+23.j        ])

没有j运算符。 j 是虚构文字语法的一部分。就像在 MATLAB 中,如果你想将一个实数转换为虚数,你应该乘以 1j,而不是在表达式的末尾加上一个 j

freq2[2] = 1+(math.pi/2)*1j

而不是

freq2[2] = 1+((math.pi)/2)j

至于 TypeError,与在 MATLAB 中不同,您不能将复数填充到浮点数组中。您需要从一开始就创建具有复杂数据类型的数组:

freq2 = np.zeros(N, dtype=complex)