matplotlib绘制lambda定义函数时报x与y维度不匹配错误如何解决
错误原因
你在调用plt.plot()绘图时,第二个参数直接传入了lambda函数对象fx,没有将x数组传入函数计算对应y值,matplotlib会将单个函数对象识别为长度为1的数值,自然就会和长度为20的x数组报维度不匹配的错误。
修复方案
仅需要修改绘图行代码,将x传入fx得到计算后的y值即可,修改后完整代码如下:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-4,8,20) print(x) fx = lambda x: x - 10 * np.exp(-1/10*((x-2)**2)) plt.plot(x, fx(x)) # 此处修改为传入fx(x),执行函数计算得到对应y数组 plt.show()
补充说明
- lambda函数和普通def定义的函数使用规则一致,必须传入参数才会执行计算逻辑返回结果,直接传递函数名传递的是函数本身的引用,不会执行计算
- 你定义的fx内部全部使用numpy向量化运算,直接传入整个x数组即可自动得到等长的y数组,完全符合plt.plot的参数要求
内容的提问来源于stack exchange,提问作者Rolf12
相关产品推荐
相关产品推荐

