2013-02-14 2 views
5

탭으로 구분 된 텍스트 파일을 Breeze DenseMatrix로 읽으 려합니다. ScalaDoc에서 이것이 가능해야하고 I/O 클래스 전체가 있지만, 예제를 찾을 수 없으며 ScalaDoc을 소화하기가 어렵습니다.Scala Breeze의 파일에서 행렬 읽기

누군가가 간단한 읽기/쓰기 예제를 제공 할 수 있습니까?

답변

3

scala.io.Source을 사용하여 파일의 탭 구분 된 데이터를 읽을 수 있습니다.

일부 샘플 데이터 : 그래서 그것을 사용하는거야 DenseMatrix 생성자의

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

하나는이 양식 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) 

그런 res0res1이 새로운 DenseMatrix을 만드는 데 사용할 수 있습니다

행의 수를 가져옵니다.

+2

감사의 RES1에서 그것을 읽을 때하는 행 메이저의 순서에 있었고, 생성자가 열 주요 기대하고 있지만. 그래서 내가 사용한 생성자는'DenseMatrix (res1.size/res0) .t'입니다. –

3

는 densematrix에 csv 파일을 읽을 수있는 방법은

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는 대소 문자를 구별하는 언어이고 "file"은 "File"이어야합니다. "val matrix = csvread (새 파일 ("file localtion "), '$ seperator')" –

관련 문제