Wie kann ich generell zwei 2d Arrays kombinieren?Concat 2D Arrays in f #
Meine Vermutung (ich konnte offensichtlich diese einfach testen) ist, dass sie immer die gleiche Anzahl von Spalten haben:
let concatArrays (arr1:obj[,]) (arr2:obj[,]) =
([arr1; arr2]) |> Array2d.concat
Diese sieht nicht Funktion existieren though. Nur um klar zu sein, sollte das Ergebnis ein 2D-Array mit der Länge = Summe der Längen und der gleichen Anzahl von Spalten wie das ursprüngliche Array2D erzeugen und sollte der gleiche Typ wie die Eingabe sein, hier obj [,]. Ich könnte das natürlich in einem Looping-Konstrukt machen, aber ich habe mich über einen Weg nach vorne gewundert. Vielen Dank.
Ich habe versucht, dieses:
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])
Aber das mit dem Index außerhalb der Grenzen Fehler kommt zurück.
Update der letzten Zeile:
Array2D.init (rows1+rows2) cls (fun i j -> if i < rows1 then arr1.[i,j] else arr2.[i,j])
Update-Arbeitslösung:
Array2D.init (rows1+rows2) cls (fun i j -> if i < rows1 then arr1.[i,j] else arr2.[i-rows1,j])
Dank alle
[Diese] (http://stackoverflow.com/a/2367927/969613) kann helfen – JMK
Danke.Aber verbindet das nicht mehrere 1d Arrays zu einem 2d Array? was ich tun möchte, ist mehrere 2d-Arrays in ein 2d-Array zu verbinden. Aber vielleicht ein guter Ausgangspunkt. Oder bekomme ich es nicht? – nik
Wenn ich Sie richtig verstehe, können Sie einfach 'Array.append' verwenden. Wenn ich falsch liege, werden Sie bitte ein Beispiel für die Eingabe und Ausgabe geben. – Tobber