我有两个列表:Dir和Vel。 每个列表中的每个项目都是一个浮点数(浮点数列表)。 因此,Vir(一个列表)中有1500个元素,其中每个元素都是一个浮点数。 Dir也一样。值都是NaN,然后是实数,例如1、1.5、2、2.5等。 我试图计算u = Vel * sin(radians(Dir))。在Matlab中,它只是Vel。* sin(radians(Dir))。
Dir和Vel都是类型列表。当我打开列表时,有1500个float类型的元素。我试过float(Dir)没有任何运气。我安装了数学和numpy。我的特定代码是:
u = [a * b for a, b in zip(Vel,sin(radians(Dir)))]
我正在尝试计算上面显示的u和v向量,但我不断收到要求使用浮点数的错误-即使每个列表仅包含浮点数。我在做什么错了?
答案 0 :(得分:0)
问题在于,当sin(radians(Dir))
是列表时,您正在做Dir
。尝试对a
和b
进行数学运算。
[v*(sin(radians(d))) for v,d in zip(vel, dir)]
答案 1 :(得分:0)
您可能正在尝试将标准math.sin
和math.radians
应用于迭代器,该迭代器将不起作用(它们需要标量)。幸运的是,NumPy支持向量运算:
import numpy as np
vel = np.array([3., 10., 40.])
dir = np.array([30., 0., 90.])
u = vel * np.sin(np.radians(dir)) # element-wise multiplication
print(u) # prints [ 1.5 0. 40. ]