9

F#で配列の項目を乗算する簡単な方法はありますか?

たとえば、サンプルから母平均を計算したい場合は、観測値に頻度を掛けてから、サンプル数で割ります。

     let array_1 = [|1;32;9;5;6|];;

     let denominator = Array.sum(array_1);;


     denominator;;

     let array_2 = [|1;2;3;4;5|];;

     let productArray = [| for x in array_1 do
                             for y in array_2 do
                                 yield x*y |];;


     productArray;;

     let numerator = Array.sum(productArray);;

     numerator/denominator;;

残念ながら、これは次のような製品配列を生成しています:-

     val it : int [] =
     [|1; 2; 3; 4; 5; 32; 64; 96; 128; 160; 9; 18; 27; 36; 45; 5; 10; 15; 20; 25;
        6; 12; 18; 24; 30|]

これはすべてとすべての積ですが、私は内積(各iに対してx。[i] * y。[i])を追いかけています。

残念ながら、i変数とインデックスをforループに追加しても機能しないようです。

ここで使用するのに最適なソリューションは何ですか?

4

3 に答える 3

8
Array.zip array_1 array_2
    |> Array.map (fun (x,y) -> x * y)

コメントが指摘しているように、次のものも使用できますArray.map2

Array.map2 (*) array_1 array_2
于 2012-10-17T14:35:09.280 に答える
7

このような:

Array.map2 (*) xs ys
于 2012-10-17T18:49:29.510 に答える
3

何かのようなもの

[| for i in 0 .. array_1.Length - 1 ->
    array_1.[i] * array_2.[i] |]

動作するはずです。

于 2012-10-17T14:35:55.317 に答える