10

私は 0 と 1 の Array2D を持っています:

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(Arrayではない)なので、Array2DをArrayに変換する標準的な方法があるかどうか疑問に思っていますか?

4

2 に答える 2

8

[,]これは、実装するという事実を使用した簡単な方法の 1 つです。ienumerable<_>

a |> Seq.cast<int> |> Seq.filter (fun x -> x == 1)

ただし、カウントのみが必要な場合は、実行できます

a |> Seq.cast<int> |> Seq.sum

0 項は合計に追加されず、カウントしたい項は 1 であるため

于 2012-10-13T06:21:21.317 に答える
7

Array2D から Array に変換する関数は、多くの状況で非常に便利です。

便利に使用できるように、Array2Dモジュールに保持できます。

module Array2D =
    let toArray (arr: 'T [,]) = arr |> Seq.cast<'T> |> Seq.toArray
于 2012-10-13T07:47:10.970 に答える