我的Array2D为0和1:
let rnd = System.Random()
let a = Array2D.init n n (fun i j -> int(System.Math.Round(rnd.NextDouble() / index)) )
我需要计算'1'元素的数量,例如:
a |> Array.filter (fun x -> x == 1)
但是'a'是Array2D(不是数组)所以我只是想知道是否有将Array2D转换为数组的标准方法?
答案 0 :(得分:6)
这是一种简单的方法,使用[,]
实现ienumerable<_>
a |> Seq.cast<int> |> Seq.filter (fun x -> x == 1)
但是如果你只需要你可以做的计数
a |> Seq.cast<int> |> Seq.sum
因为0个术语不会添加到总和中,而您想要计算的术语只是1
答案 1 :(得分:6)
在许多情况下,从Array2D转换为Array的函数非常方便。
您可以将其保存在Array2D
模块中以方便使用。
module Array2D =
let toArray (arr: 'T [,]) = arr |> Seq.cast<'T> |> Seq.toArray