我使用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中操作向量和矩阵的新方法,您可能不需要数组。