2014-12-19 15 views
4

甲最簡單的方法我有一個10到數組轉換爲2D陣列中的階

val matrix = for { 
    r <- 0 until 10 
    c <- 0 until 10 
} yield r + c 

並希望將「基質」到Array[Array[Int]]轉換用10行和10列。

最簡單的方法是什麼?

+0

'matrix',就像你定義的那樣,是一個'Vector [Int]',而不是'Array [Int]'。 – 2014-12-19 07:35:59

回答

10
val matrix = (for { 
    r <- 0 until 3 
    c <- 0 until 3 
} yield r + c).toArray 
// Array(0, 1, 2, 1, 2, 3, 2, 3, 4) 

scala> matrix.grouped(3).toArray 
// Array(Array(0, 1, 2), Array(1, 2, 3), Array(2, 3, 4)) 
2

您顯示的代碼爲您提供了一個Int的矢量,而不是一個數組。如果Vector和它是好的,生成一個新的,你只需要獲得兩次

val matrix = for (r <- 1 to 10) 
    yield for(c <- 1 to 10) 
    yield r+c 

如果您需要將現有的矢量轉換成數組[數組[INT]]正如你所說,使用分組克里斯 - 馬丁建議

matrix.grouped(10).toArray.map(_.toArray) 
7

如果我理解正確的話,你可以這樣做:

Array.tabulate(10,10)(_+_)    
//> res0: Array[Array[Int]] = Array(Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), ....) 

如果你只需要一個10×10陣列[INT]沒有,你可以做任何值,

Array.ofDim[Int](10,10) 

/> res1: Array[Array[Int]] = Array(Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Array(0 
               //| , 0, 0, 0, 0, 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Array(0, .... 
+0

編輯..謝謝! – mohit 2014-12-19 07:52:06

1
for (x <- (0 until 10).toArray) yield (x until x + 10).toArray