如何解决Python绘图时出现unsupported operand type(s) for -: 'int' and 'tuple'错误
报错原因
- 自定义函数
k中用到了numpy的算术运算规则,你传入的a、b是Python原生元组类型,numpy不支持整数和原生元组直接做减法运算,这是触发报错的核心原因 - 原有代码中x轴序列长度为365,而
a、b仅包含5组参数,运算得到的erosion长度也为5,二者维度不匹配,即便解决类型问题也无法完成绘图
可直接运行的修正代码
如果你需要用当前给出的5组参数计算并绘图,修正后代码如下:
import numpy as np import matplotlib.pyplot as plt def k(Tg, P): return np.exp(((15-Tg)/P)-28795/4177.3) # 将原生元组转为numpy数组,支持向量化运算 a = np.array([-100,-10,100,78,51]) b = np.array([0.0236, 0.0237, 0.0229, 0.00807, 0.0045]) erosion = k(a, b) # 调整x轴长度和运算结果匹配 x = np.arange(len(erosion)) plt.plot(x, erosion) plt.show()
如果你需要生成365天对应的连续函数图像,需要先将参数Tg(即变量a)、P(即变量b)生成为长度为365的序列,再代入函数计算即可。
内容的提问来源于stack exchange,提问作者G Dennis
相关产品推荐
相关产品推荐

