में Concat 2D Arrays आम तौर पर मैं दो 2 डी सरणी कैसे जोड़ सकता हूं?एफ #
let concatArrays (arr1:obj[,]) (arr2:obj[,]) =
([arr1; arr2]) |> Array2d.concat
इस समारोह does not है, हालांकि मौजूद हैं:
मेरे धारणा (मैं स्पष्ट रूप से आसानी से इस परीक्षण कर सकते हैं) है कि वे हमेशा स्तंभों की समान संख्या है। बस स्पष्ट होने के लिए, परिणाम को 2 डी सरणी लंबाई और योग की लंबाई और मूल arrays2D के समान कॉलम के साथ उत्पन्न करना चाहिए और इनपुट के समान प्रकार होना चाहिए, यहां obj [,]। मैं स्पष्ट रूप से इसे लूपिंग निर्माण में कर सकता था लेकिन मैं एक f # तरीके के बारे में सोच रहा था। धन्यवाद।
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])
लेकिन इस सीमा त्रुटि से बाहर सूचकांक के साथ वापस आता है:
मैं इस कोशिश की।
अंतिम पंक्ति की अद्यतन:
Array2D.init (rows1+rows2) cls (fun i j -> if i < rows1 then arr1.[i,j] else arr2.[i,j])
अद्यतन काम कर समाधान:
Array2D.init (rows1+rows2) cls (fun i j -> if i < rows1 then arr1.[i,j] else arr2.[i-rows1,j])
धन्यवाद सभी
[यह] (http://stackoverflow.com/a/2367927/969613) – JMK
धन्यवाद मदद कर सकता है।लेकिन क्या यह एक 1 डी सरणी में एकाधिक 1 डी सरणी में शामिल नहीं होता है? मैं एक 2 डी सरणी में एकाधिक 2 डी सरणी में शामिल होना चाहता हूं। लेकिन शायद एक अच्छा प्रारंभिक बिंदु। या मुझे यह नहीं मिल रहा है? – nik
अगर मैं आपको सही ढंग से समझता हूं तो आप केवल 'Array.append' का उपयोग कर सकते हैं। यदि मैं गलत हूं, तो कृपया एक उदाहरण इनपुट और आउटपुट प्रदान करेंगे। – Tobber