Python定义Lambda函数绘图报错:仅能将大小为1的数组转为Python标量
问题解决方法
错误出现的核心原因有两个:
- 使用了仅支持标量的
math.exp(),无法处理numpy数组类型的输入 - 函数表达式写错,原公式中
0.2是指数的一部分,而非单独相加项
修正后的代码
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1, 5, 100) # 改用numpy的exp函数,同时修正表达式,将0.2放入指数中 y = lambda a: (a - 2.5) * np.exp(-0.5 * ((a - 2)**2) + 0.2) plt.plot(x, y(x)) plt.show()
关键修改说明
- 替换
math.exp为np.exp:numpy的exp函数天然支持数组运算,能逐元素处理整个x数组 - 修正函数表达式:原公式是
e的(-0.5*(x-2)² + 0.2)次方,把原本写在外面的+0.2移到指数内部,保证和定义的函数一致
内容的提问来源于stack exchange,提问作者lisa andersson
相关产品推荐
相关产品推荐

