从Scala Breeze中的文件中读取矩阵

时间:2013-02-14 22:52:54

标签: scala scalala scala-breeze

我想将制表符分隔的文本文件读入Breeze DenseMatrix。我在ScalaDoc中看到这应该是可能的,并且有一整套I / O类,但我找不到任何示例,并且很难消化ScalaDoc。

有人可以提供简单的读/写示例吗?

2 个答案:

答案 0 :(得分:4)

有一种方法可以将csv文件读入densematrix

import breeze.linalg._
import java.io._
val matrix=csvread(new File("your file localtion"),',')

API:http://www.scalanlp.org/api/breeze/index.html#breeze.linalg.package

答案 1 :(得分:3)

您可以使用scala.io.Source从文件中读取制表符分隔的数据。

一些示例数据:

0       1       2       3       4       5
6       7       8       9       10      11

其中一个DenseMatrix构造函数的格式为new DenseMatrix(rows: Int, data: Array[V], offset: Int = 0),所以我会使用它。

获取行数:

scala> scala.io.Source.fromFile("TabDelimited.txt").getLines.size
res 0:Int = 2

然后将数据作为Array[Int]

获取
scala> scala.io.Source.fromFile("TabDelimited.txt").getLines.toArray.flatMap(_.split("\t")).map(_.toInt)
res1: Array[Int] = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

然后res0res1可用于制作新的DenseMatrix