2013-02-14 15 views
5

Chcę przeczytać plik tekstowy rozdzielany tabulatorami w Breeze DenseMatrix. Widzę w ScalaDoc, że to powinno być możliwe i istnieje cały zestaw klas I/O, ale nie mogę znaleźć żadnych przykładów i ciężko jest strawić ScalaDoc.Przeczytaj matrycę z pliku w Scala Breeze

Czy ktoś może podać prosty przykład odczytu/zapisu?

Odpowiedz

3

Możesz użyć scala.io.Source, aby odczytać dane rozdzielone tabulatorami z pliku.

Niektóre przykładowe dane:

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

Jednym z DenseMatrix konstruktorów ma tę formę new DenseMatrix(rows: Int, data: Array[V], offset: Int = 0) więc użyję tego.

Pobiera liczbę wierszy:

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

następnie uzyskać dane jako 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) 

Następnie res0 i res1 może być użyty do utworzenia nowego DenseMatrix.

+2

Dzięki, chociaż po przeczytaniu go w RES1 był w rzędzie-major porządku i konstruktor oczekuje kolumna-dur. Tak więc użyłem konstruktora 'DenseMatrix (res1.size/res0) .t' –

3

Istnieje sposób do odczytu pliku csv do densematrix

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

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

+0

scala jest językiem rozróżniającym wielkość liter," plik "powinien być" Plik ". "val matrix = csvread (nowy plik (" twój plik localtion ")," $ seperator ")" –