2013-02-14 18 views
5

Desidero leggere un file di testo delimitato da tabulazioni in una Breeze DenseMatrix. Vedo in ScalaDoc che questo dovrebbe essere possibile e ci sono un intero set di classi I/O, ma non riesco a trovare alcun esempio ed è difficile digerire lo ScalaDoc.Leggere una matrice da un file in Scala Breeze

Qualcuno può fornire un semplice esempio di lettura/scrittura?

risposta

3

È possibile utilizzare scala.io.Source per leggere i dati delimitati da tabulazione dal file.

alcuni dati di esempio:

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

Uno dei DenseMatrix costruttori ha questa forma new DenseMatrix(rows: Int, data: Array[V], offset: Int = 0) quindi userò questo.

ottenere il numero di righe:

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

quindi ottenere i dati come 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) 

Poi res0 e res1 può essere utilizzato per creare un nuovo DenseMatrix.

+2

Grazie, anche se durante la lettura nel res1 era in ordine row-major e il costruttore si aspetta column-major. Quindi il costruttore che ho usato era 'DenseMatrix (res1.size/res0) .t' –

3

C'è un modo per leggere un file CSV in 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 è un linguaggio case-sensitive, il" file "dovrebbe essere" File ". "val matrix = csvread (new File (" your file localtion "), '$ seperator')" –

Problemi correlati