Come è possibile combinare due array 2d in generale?Array concat 2D in f #
mia ipotesi (ho potuto ovviamente facilmente verificare questo) è che hanno sempre lo stesso numero di colonne:
let concatArrays (arr1:obj[,]) (arr2:obj[,]) =
([arr1; arr2]) |> Array2d.concat
Questa funzione doesnt esiste però. Per essere chiari, il risultato dovrebbe produrre un array 2d con lunghezza = somma delle lunghezze e lo stesso numero di colonne delle matrici originali2D e dovrebbe essere dello stesso tipo dell'input, qui obj [,]. Ovviamente potrei farlo in un costrutto ciclico, ma mi stavo chiedendo un modo f #. Grazie.
ho provato questo:
let append2D (arr1:float[,]) (arr2:float[,]) =
let cls = arr1.GetLength 1
let rows1 = arr1.GetLength 0
let rows2 = arr2.GetLength 0
Array2D.init (rows1+rows2) cls (fun i j -> match i with | a when a <= rows1 -> arr1.[i,j] | _ -> arr2.[i,j])
Ma questo torna con indice di errore di limiti.
Aggiornamento dell'ultima riga:
Array2D.init (rows1+rows2) cls (fun i j -> if i < rows1 then arr1.[i,j] else arr2.[i,j])
Aggiornamento soluzione di lavoro:
Array2D.init (rows1+rows2) cls (fun i j -> if i < rows1 then arr1.[i,j] else arr2.[i-rows1,j])
grazie tutti
[Questo] (http://stackoverflow.com/a/2367927/969613) può aiutare – JMK
Grazie.Ma questo non unisce più array 1d in un array 2d? quello che voglio fare è unire più array 2d in un array 2d. Ma forse un buon punto di partenza. O non lo capisco? – nik
Se ho capito bene, puoi semplicemente usare 'Array.append'. Se ho torto, ti preghiamo di fornire un esempio di input e output. – Tobber