scala如何从文件读取数据并转换成矩阵

来源:互联网 发布:java制表符怎么用 编辑:程序博客网 时间:2024/06/11 07:48

本文教你scala如何从文件中读取数据并转换成Breeze矩阵


假设文件中数据的保存格式为:每行为一个样本数据,并由‘,’分隔。如:a.txt

            1,2,3,4,5,6            2,3,4,5,6,7            3,4,5,6,7,8

第一步:读取数据,将每行数据从String转换成Array

val data = sc.textFile("a.txt")

此时,data的数据类型为RDD[Array[T]]
第二步:将data转换成Array[Array[T]],并读取行数和列数

val Array_data = data.collect()val rows = Array_data.lengthval cols = Array_data(0).length

此时Array_data为二维数组
第三步:将其平铺成一维数组

val flattenArray = Array_data.flatten 

第四步:从一维数组创建Breeze矩阵

import breeze.linalg._val mat = new DenseMatrix(cols,rows,flattenArray).t

由于平铺成一维数组与创建二维矩阵的方式(按行或按列)正好相反,因此在创建二维矩阵时需要交换行数和列数,并在最后把矩阵转置即可。

若对您有用,望点赞!