点产品功能

MiP*_*MiP 2 .net f# matrix

我写了一个带有2个列表的点积函数:

let inline dot a b =
    List.zip a b
    |> List.map (fun (a, b) -> a * b)
    |> List.reduce (+)
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来计算点积而不使用List.zip

Eri*_*oom 6

一种较短的方法是使用List.map2:

let inline dot a b = List.map2 (*) a b |> List.sum
Run Code Online (Sandbox Code Playgroud)

另一个是使用List.fold2:

let inline dot a b = List.fold2 (fun state x y -> state + x * y) LanguagePrimitives.GenericZero a b
Run Code Online (Sandbox Code Playgroud)