2013-02-14 5 views
5

Ich möchte eine tabulatorgetrennte Textdatei in eine Breeze DenseMatrix lesen. Ich sehe in der ScalaDoc, dass dies möglich sein sollte und es gibt eine ganze Reihe von I/O-Klassen, aber ich kann keine Beispiele finden und es ist schwer, die ScalaDoc zu verdauen.Lesen Sie eine Matrix aus einer Datei in Scala Breeze

Kann jemand ein einfaches Lese-/Schreibbeispiel bereitstellen?

Antwort

3

Sie können scala.io.Source verwenden, um tabulatorgetrennte Daten aus der Datei einzulesen.

Einige Daten Beispiel:

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

Einer der DenseMatrix Bauer hat diese Form new DenseMatrix(rows: Int, data: Array[V], offset: Int = 0) so werde ich diese verwenden.

Erhalten Sie die Anzahl der Zeilen:

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

dann die Daten als Array[Int] erhalten:

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) 

Dann res0 und res1 können einen neuen DenseMatrix erstellen verwendet werden.

+2

Danke, obwohl, wenn es in den res1 Lese war in Reihe-Großauftrag und die Konstruktor erwartet column-Dur. Der Konstruktor, den ich benutzte, war 'DenseMatrix (res1.size/res0) .t' –

3

Es gibt einen Weg, um eine CSV-Datei in densematrix

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

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

+0

scala ist eine Groß-und Kleinschreibung Sprache, die" Datei "sollte" Datei "sein. "val matrix = csvread (neue Datei (" Ihre Datei-Lokalisierung "), '$ seperator')" –