只有长度为1的数组才能转换为Python标量
如何更改运行时的代码?必须在实轴和虚轴上运行产生函数只有长度为1的数组才能转换为Python标量,python,python-2.7,python-3.x,matplotlib,complex-numbers,Python,Python 2.7,Python 3.x,Matplotlib,Complex Numbers,如何更改运行时的代码?必须在实轴和虚轴上运行产生函数w(ω)=1/(1+1j*ω)的图形 import matplotlib.pyplot as plt import numpy as np def func(a): for x in range(len(a)): plt.plot([0, a[x].real], [0, a[x].imag], 'ro-', label='python') limit=np.max(np.ceil(np.absolute(a)
w(ω)=1/(1+1j*ω)
的图形
import matplotlib.pyplot as plt
import numpy as np
def func(a):
for x in range(len(a)):
plt.plot([0, a[x].real], [0, a[x].imag], 'ro-', label='python')
limit=np.max(np.ceil(np.absolute(a))) # set limits for axis
plt.xlim((-limit,limit))
plt.ylim((-limit,limit))
plt.ylabel('Imaginary')
plt.xlabel('Real')
plt.show()
omega = np.linspace(-4, 4, 251)
a = np.arange(1) + 1j*np.arange(omega, 1)
func(a)
回答您的具体问题:错误源于
omega
是一个数组,但arange
需要标量参数:从到步长值。由于它得到一个长度为1的数组(omega
),因此无法确定应选择哪个值作为范围的起点。因此错误:omega
无法转换为标量(这将使arange
工作)
但是现在还不清楚为什么要这样绘制,以及你到底想在数组中放入什么
a
,你有什么理由不直接写a=1/(1+1j*omega)
?