Python:尝试绘图时,只能将长度为 1 的数组转换为 python 标量错误

问题描述 投票:0回答:1

我是Python新手,正在尝试使用以下代码绘制方程式。

import math
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
L = 0.0001
b = 0.0079
h = 0.405
t = np.arange(0, 1, 0.01)
y = 1/(b+(h*L))*[(h*L)+b*math.exp((-h+(b/L)*t))]
plt.plot(t,y)
plt.grid()
plt.show()

它返回 TypeError: 运行时只有长度为 1 的数组可以转换为 Python 标量。任何帮助将不胜感激。

python plot typeerror
1个回答
0
投票

这是因为您尝试在 NumPy 数组 (

math.exp()
) 上使用
t
math
模块函数(如
math.exp()
)旨在处理单个标量值,而不是数组。

相反,您应该使用 NumPy (

np.exp()
) 中的等效函数,它可以处理数组。

此外,你的方程有一些与括号相关的问题,你不能将数组乘以列表。

这是修改后的代码。

import numpy as np
import matplotlib.pyplot as plt

# Data for plotting
L = 0.0001
b = 0.0079
h = 0.405
t = np.arange(0, 1, 0.01)

# Corrected equation (using np.exp instead of math.exp)
y = 1 / (b + (h * L)) * ((h * L) + b * np.exp((-h + (b / L)) * t))

plt.plot(t, y)
plt.grid()
plt.show()

希望这对你有一点帮助。

© www.soinside.com 2019 - 2024. All rights reserved.