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

Arrays Scala中高效的二维数组列提取,arrays,scala,collections,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) 一种简单而低效的方法包括

例如,考虑一个二维数组

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)
}
因此,我们也需要更有效的方法

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

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

如果您需要真正高效的代码,我可能会选择while循环。我怀疑地图操作是否非常有效,因为问题很简单,这将是我的选择。你能解释一下你在那里做了什么吗?:)@艾哈迈多夫:
a.map{{(n-1)}
只是
a.map{innerArray=>innerArray(n-1)}
的一个较短版本,它是
a.map{innerArray=>innerArray.apply(n-1)}
的一个较短版本。“对于
a
的每个内部数组,在索引
n-1
处获取一个元素。”我有一个带有一些空值的2D数组。对于包含空值的列,2dArray.map(Un(n-1))返回ArrayIndexOutOfBound异常。有什么解决办法吗?@Ahmedov:你能举个例子吗。这是我的本地数据集。我想把sales列读入字符串数组。当我说'val c=localTable.map((2))'时,我得到了上面提到的错误。我认为问题源于“Sales”列中存在一些空值,因为当我在第二列中读取时,我没有得到任何错误。