只有length-1数组可以转换为Python标量

时间:2015-10-20 18:45:31

标签: python python-2.7 python-3.x matplotlib complex-numbers

如何更改运行代码?有必要运行在实轴和虚轴上生成函数w(omega) = 1/(1 + 1j*omega)的图形。

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)

1 个答案:

答案 0 :(得分:0)

回答您的具体问题:错误来自于arange是一个数组,但omega期望标量参数:从步骤到值。由于它得到长度为1的数组(omega),因此无法确定应选择omega的哪个值作为范围的起点。因此错误:arange无法转换为标量(这将使a工作)。

但目前还不清楚你为什么要用这种方式进行绘图,以及你想要放入数组position:absolute;的确切内容。