2013-02-14 2 views
5

Я хочу прочитать текстовый файл с разделителями табуляции в Breeze DenseMatrix. Я вижу в ScalaDoc, что это должно быть возможно, и есть целый набор классов ввода-вывода, но я не могу найти примеров и трудно переварить ScalaDoc.Прочитайте матрицу из файла в Scala Breeze

Может ли кто-нибудь предоставить простой пример чтения/записи?

ответ

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) 

Тогда res0 и res1 могут быть использованы для создания нового DenseMatrix.

+2

Спасибо, хотя при чтении его в res1 было в строке-мажорный порядок и конструктор ожидает столбцов. Таким образом, конструктор, который я использовал, был «DenseMatrix (res1.size/res0) .t' –

3

Там есть способ чтения файла CSV в densematrix

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

апи: http://www.scalanlp.org/api/breeze/index.html#breeze.linalg.package

+0

scala - это чувствительный к регистру язык,« файл »должен быть« Файл ». «val matrix = csvread (новый файл (« локализация вашего файла »),« $ seperator ») –