2013-02-14 31 views
5

Tôi muốn đọc tệp văn bản được phân cách bằng tab thành một Breeze DenseMatrix. Tôi thấy trong ScalaDoc rằng điều này nên có thể và có một tập hợp toàn bộ các lớp I/O, nhưng tôi không thể tìm thấy bất kỳ ví dụ nào và thật khó để tiêu hóa ScalaDoc.Đọc ma trận từ một tệp trong Scala Breeze

Ai đó có thể cung cấp ví dụ đọc/ghi đơn giản không?

Trả lời

3

Bạn có thể sử dụng scala.io.Source để đọc trong dữ liệu được phân cách bằng tab từ tệp.

Một số dữ liệu mẫu:

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

Một trong những DenseMatrix nhà xây dựng có hình thức này new DenseMatrix(rows: Int, data: Array[V], offset: Int = 0) vì vậy tôi sẽ sử dụng đó.

Lấy số hàng:

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

Sau đó lấy dữ liệu như một 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) 

Sau đó res0res1 thể được sử dụng để tạo ra một mới DenseMatrix.

+2

Cảm ơn, mặc dù khi đọc nó trong res1 là theo thứ tự hàng-lớn và các nhà xây dựng hy vọng cột lớn. Vì vậy, hàm tạo mà tôi đã sử dụng là 'DenseMatrix (res1.size/res0) .t' –

3

Có một cách để đọc một tập tin csv vào 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 là một ngôn ngữ phân biệt chữ hoa chữ thường," tệp "phải là" Tệp ". "val matrix = csvread (tệp mới (" tệp cục bộ của bạn "), '$ seperator')" –

Các vấn đề liên quan