【问题标题】:How to multiply two lists of floats如何将两个浮点数列表相乘
【发布时间】:2025-11-29 15:50:01
【问题描述】:

我有两个列表:Dir 和 Vel。 每个列表中的每个项目都是一个浮点数(浮点数列表)。 所以 Vir 中有 1500 个元素(一个列表),其中每个元素都是一个浮点数。与目录相同。值都是 NaN,然后​​是实数,如 1、1.5、2、2.5 等。 我正在尝试计算 u = Vel * sin(radians(Dir))。在 Matlab 中,它只是 Vel .* sin(radians(Dir))。

Dir 和 Vel 都是类型列表。当我打开列表时,有 1500 个浮点类型的元素。我试过 float(Dir) 没有任何运气。我安装了数学和numpy。我的具体代码是:

u = [a * b for a, b in zip(Vel,sin(radians(Dir)))]

我正在尝试计算上面显示的 u 和 v 向量,但我不断收到需要浮点数的错误 - 即使每个列表仅包含浮点数。我做错了什么?

【问题讨论】:

    标签: python list


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 天哪,这成功了。太感谢了。我只是在这个“问题”上浪费了几个小时!