运行此程序时,我收到错误" TypeError:只有length-1数组可以转换为Python标量",具体是指第9行,其中分配了x1变量。
我在这方面有点无能为力。我使用了一个非常相似的代码片段来完成之前的任务,它一切正常。我接受了一个向量作为函数的参数,并同时计算了所有值。
注意:我移除浮动后似乎工作正常,但我不知道为什么。谁能解释一下?
import matplotlib.pyplot as plt
import numpy as np
g = 9.78
p = 1000
h = 50
s = 7.9 * 10**-2
def water_wave_speed(l):
x1 = float(g * l/(2 * np.pi))
x2 = 1 + s * float((4 * np.pi**2)/(p * g * l**2))
x3 = float((2 * np.pi * h)/l)
c = np.sqrt(x1 * x2 * np.tanh(x3))
return c
l_values = np.linspace(0.001, 0.1, 10)
c_values = water_wave_speed(l_values)
plt.plot(l_values, c_values)
plt.show()
答案 0 :(得分:4)
删除所有float
次调用,您的代码应该正常工作(作为浮动)。你试图将numpy数组强制转换为单个浮点数值,这是不可行的。