【问题标题】:matplotlib error: x and y must have same first dimension and lambda functionmatplotlib 错误:x 和 y 必须具有相同的第一维和 lambda 函数
【发布时间】:2018-05-09 20:01:51
【问题描述】:

我对 python 很陌生,尤其是对 lambda 函数很陌生。我尝试绘制我在下面定义的函数,但我得到了

ValueError: x 和 y 必须具有相同的第一维,但形状为 (100,) 和 (1,)

从我所看到的函数绘图来看,我认为错误在于我的函数定义中,即 W 定义错误。 代码如下:

import numpy as np
import matplotlib.pyplot as plt

def W(t):
    s=lambda t: t
    for k in range(5):
        s=lambda t, y=s: y(t)+k
    return s
t=np.linspace(0,1,100)
plt.plot(t,W(t))

【问题讨论】:

  • 错误本身来自t有100个元素,而W(t)只有一个元素,即lambda函数s。您需要使用一些输入来评估函数。然而,一旦你这样做了,你就会遇到其他几个问题......我建议你先创建一个更简单的测试用例来理解这个问题。
  • 我知道 W(t) 只有一个元素。但为什么? W 应该是 t 的函数,s 也应该是。关于为什么 s 不能作为函数工作的任何帮助?
  • 是的 Wt 的函数。它返回一个函数,这样W(t) 也是t 的函数。 W(t)(t) 可能会导致其他结果。但是正如我所说,代码中存在很多问题,至少我无法在不知道最终结果的情况下解决所有问题。

标签: python matplotlib lambda


【解决方案1】:

如果我把我的代码改成这样,它可以工作:

import numpy as np
import matplotlib.pyplot as plt

def W(t):
    s=lambda x: x
    for k in range(5):
        s=lambda x, y=s: y(x)+k
    return s(t)
t=np.linspace(0,1,100)
plt.plot(t,W(t))

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2016-11-10
    相关资源
    最近更新 更多