【问题标题】:only length-1 arrays can be converted to Python scalars只有长度为 1 的数组可以转换为 Python 标量
【发布时间】:2015-10-20 18:45:31
【问题描述】:

如何更改该代码以进行运行?必须运行在实轴和虚轴上产生函数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)

【问题讨论】:

  • 你有什么理由不写a = 1/(1 + 1j*omega)

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


【解决方案1】:

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

但目前尚不清楚您为什么要以这种方式绘制,以及您想在数组a 中放入什么。

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2016-03-10
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多