为什么这段代码无法将复数转换为浮点数?或者我得到无效的语法
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)
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)