В this question я спросил, как выполнить аналогичную операцию с помощью PowerPack. Я решил использовать MathNet вместо этого, поскольку он предназначен для .Net в целом, а не только для F #.Как сравнить элементы матрицы в Math.Net в F #
Мне нужна функция, которая принимает 2 матрицы и выводит процент соглашения. Значения в матрицах равны либо 1,0, либо -1,0. По-видимому, матрицы типа Matrix (int) не поддерживаются.
У меня есть функция, которая выполняет это, но я подозреваю, что есть более прямой путь для этого, предпочтительно используя функциональность класса Matrix.
Это то, что я получил:
let percentageTheSame (a:Matrix<float>) (b:Matrix<float>) =
let seqA = a |> Matrix.toSeq
let seqB = b |> Matrix.toSeq
let sames = Seq.map2 (fun a b -> (a,b)) seqA seqB |> Seq.filter (fun (a, b) -> a = b)
float(sames.Count())/float(seqA.Count())
И почему что у вас недостаточно? – scrwtp
Только очевидное улучшение заключается в использовании 'Seq.zip' вместо' map2' –
Шахта не достаточно хороша, потому что ей приходится прибегать к использованию класса коллекции без матрицы. Густаво прибил его. –