Sim*_*ard 8 arrays f# elementwise-operations
有没有一种简单的方法来在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;;
Run Code Online (Sandbox Code Playgroud)
不幸的是,这产生了这样的产品阵列: -
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|]
Run Code Online (Sandbox Code Playgroud)
哪一切都是一切的产物,而我是在点积之后(x.[i]*y.[i]为每一个i).
不幸的是,为for循环添加一个i变量和一个索引似乎不起作用.
这里使用的最佳解决方案是什么?
Array.zip array_1 array_2
|> Array.map (fun (x,y) -> x * y)
Run Code Online (Sandbox Code Playgroud)
正如评论所指出的,您还可以使用Array.map2:
Array.map2 (*) array_1 array_2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |