如何将两个浮点数列表相乘

时间:2019-07-26 22:03:24

标签: python list

我有两个列表: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向量,但我不断收到要求使用浮点数的错误-即使每个列表仅包含浮点数。我在做什么错了?

2 个答案:

答案 0 :(得分:0)

问题在于,当sin(radians(Dir))是列表时,您正在做Dir。尝试对ab进行数学运算。

[v*(sin(radians(d))) for v,d in zip(vel, dir)]

答案 1 :(得分:0)

您可能正在尝试将标准math.sinmath.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. ]