Scala中高效的二维数组列提取

时间:2014-02-21 10:03:14

标签: arrays scala collections

考虑二维数组,例如

scala> val a = Array.tabulate(2,3){_+_}
a: Array[Array[Int]] = Array(Array(0, 1, 2), Array(1, 2, 3))

如何定义功能

def getCol(ith: Int, a: Array[Array[Int]]): Array[Int]

提供

val col2 = getCol(2, a)
col2: Array[Int] = Array(1,2)

一种简单而低效的方法包括

def getCol(ith: Int, a: Array[Int]): Array[Int] = {
  val t = a.transpose
  t(ith)
}

因此也要求更有效的方式。

1 个答案:

答案 0 :(得分:7)

def getCol(n: Int, a: Array[Array[Int]]) = a.map{_(n - 1)}

请注意,您必须对第N个元素使用n - 1