2013-02-14 19 views
5

'daki bir dosyadan bir matris okuyun Bir Breeze DenseMatrix'e sekmeyle ayrılmış metin dosyasını okumak istiyorum. ScalaDoc'ta bunun mümkün olabileceğini ve bir dizi I/O sınıfı olduğunu görüyorum, ancak hiçbir örnek bulamıyorum ve ScalaDoc'u sindirmek zor.Scala Breeze

Birisi basit bir okuma/yazma örneği sağlayabilir mi?

cevap

3

Dosyadan sekme ile ayrılmış verileri okumak için scala.io.Source'u kullanabilirsiniz.

Bazı örnek veriler: ben bunu kullanırız DenseMatrix kurucular

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

biri şu şekilde new DenseMatrix(rows: Int, data: Array[V], offset: Int = 0) sahiptir.

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

Sonra bir Array[Int] veri edinmek:

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) 

Sonra res0 ve res1 yeni DenseMatrix oluşturmak için kullanılabilecek

satır sayısını alın.

+2

sayesinde res1 bunu okurken satır-majör sırada olduğunu ve yapıcı sütun majör bekliyor rağmen. Yani kullandım kurucu 'DenseMatrix (res1.size/res0) .t' –

3

densematrix içine bir csv dosyasını okumak için bir yolu var

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, büyük/küçük harf duyarlı bir dil, "dosya" "Dosya" olmalıdır. "val matrix = csvread (yeni Dosya (" dosya yerelleştirmeniz "), '$ seperator') –