"只有length-1数组可以转换为Python标量" -error with float conversion-function

时间:2016-10-07 22:55:31

标签: python arrays numpy vector

运行此程序时,我收到错误" 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()

1 个答案:

答案 0 :(得分:4)

删除所有float次调用,您的代码应该正常工作(作为浮动)。你试图将numpy数组强制转换为单个浮点数值,这是不可行的。