I have Array2D of 0 and 1:
let rnd = System.Random()
let a = Array2D.init n n (fun i j -> int(System.Math.Round(rnd.NextDouble() / index)) )
Here is one easy way, using the fact that [,]
implements ienumerable<_>
a |> Seq.cast<int> |> Seq.filter (fun x -> x == 1)
but if you only need the count you can do
a |> Seq.cast<int> |> Seq.sum
as the 0 terms won't add to the sum and the terms you want to count are just 1
The function transforming from Array2D to Array is very handy in many situations.
You can keep it in Array2D
module for convenient use.
module Array2D =
let toArray (arr: 'T [,]) = arr |> Seq.cast<'T> |> Seq.toArray