Scala -将mahout向量转换为数组



我使用mahout数学向量(org.apache.mahout.math.Vector)并将其转换为数组

查看文档,我没有找到可以转换的函数。

转换它的最简单方法是什么(使用scala)?

您可以使用JavaConverters(我没有mahout,所以代码中可能有一个小错误):

val javaIterable = mahoutVector.all()
import scala.collection.JavaConverters.iterableAsScalaIterableConverter
val scalaIterable = javaIterable.asScala
val scalaArray = scalaIterable.toArray

scalaArray现在包含Vector。元素对象。如果希望使用双精度值,则必须映射元素(使用.get()):

[same first three lines as above]
val scalaArray = scalaIterable.map(_.get()).toArray

Mahout的最新主版本有一个非常完整的Scala API和线性代数DSL。新的代码正在用Scala编写,并针对Spark。事实上,Hadoop mapreduce不接受新的贡献,只有Spark。

Scala和Spark绑定在这里描述:http://mahout.apache.org/users/sparkbindings/ScalaSparkBindings.pdf

甚至还有一个Scala Shell,您可以在其中交互式地实验许多核心Mahout代码。

考虑到Scala中操作向量和矩阵的新方法,您可能不需要数组。

最新更新