【Python】读写矩阵、矩阵转向量代码
一、基础知识:
open(fileName,model="r"):打开文件
model参数:
"r":读(默认) "rb":二进制读 "rb+":二进制读写
"w":写(会覆盖原有文件) "wb":二进制写 "wb+":二进制读写
"a":追加(从EOF开始) "ab":二进制追加 "ab+":二进制追加读写
"r+":读写(不会创建不存在的文件,从顶部开始读/写,覆盖之前内容)
"w+":读写(会创建不存在的文件,从顶部开始读/写,覆盖之前内容)
"a+":追加读写(会创建不存在的文件,从顶部开始读,从底部开始写,不覆盖之前内容) >>>f = open("test.txt") .read():读取文件的全部内容,返回一个字符串 >>>f.read()
"1 2 3 4"
.readlines():读取文件的全部内容,返回一个列表,列表中的元素为各行的字符串(包括换行符 )
>>>f.readlines()
["1 2 ", "3 4"] .close():关闭文件
>>>f.close()
map(func,*iterables):将可迭代对象中的元素分别作为参数传递到函数func中,返回一个列表
for line in fr.readlines():
strLine = line.strip().split(" ")
numLine = map(float,strLine)
二、读入文件中的矩阵数据
1.readMat(fileName) 输入:文件名
作用:读入文件中的矩阵(空格和换行符分隔)
输出:二维列表(datatype:int)
输出:二维列表(datatype_float)
def loadDataSet(fileName): #general function to parse tab -delimited floats
dataMat = [] #assume last column is target value
fr = open(fileName)
for line in fr.readlines():
curLine = line.strip().split(" ")
fltLine = map(float,curLine) #map all elements to float()
dataMat.append(fltLine)
return dataMat
三、读入文件中的矩阵数据转换为向量
mat2vec(fileName)
输入:文件名
作用:将文件中的矩阵转(空格和换行符分隔)换为向量读入
输出:一维列表
def mat2vec(fileName):
fr = open(fileName)
vec = [int(j) for j in fr.read().strip().replace(" "," ").split(" ")]
fr.close()
return vec
四、将二维列表写入txt文件
使用pandas包中的to_csv方法
import pandas as pd df = pd.DataFrame(data)
df.to_csv(fileName,header= False, index = False,sep = " ")
open(fileName,model="r"):打开文件
model参数:
"r":读(默认) "rb":二进制读 "rb+":二进制读写
"w":写(会覆盖原有文件) "wb":二进制写 "wb+":二进制读写
"a":追加(从EOF开始) "ab":二进制追加 "ab+":二进制追加读写
"r+":读写(不会创建不存在的文件,从顶部开始读/写,覆盖之前内容)
"w+":读写(会创建不存在的文件,从顶部开始读/写,覆盖之前内容)
"a+":追加读写(会创建不存在的文件,从顶部开始读,从底部开始写,不覆盖之前内容) >>>f = open("test.txt") .read():读取文件的全部内容,返回一个字符串 >>>f.read()
"1 2 3 4"
.readlines():读取文件的全部内容,返回一个列表,列表中的元素为各行的字符串(包括换行符 )
>>>f.readlines()
["1 2 ", "3 4"] .close():关闭文件
>>>f.close()
map(func,*iterables):将可迭代对象中的元素分别作为参数传递到函数func中,返回一个列表
for line in fr.readlines():
strLine = line.strip().split(" ")
numLine = map(float,strLine)
二、读入文件中的矩阵数据
1.readMat(fileName) 输入:文件名
作用:读入文件中的矩阵(空格和换行符分隔)
输出:二维列表(datatype:int)
def readMat(fileName):
fr = open(fileName)
dataMat = []
for line in fr.readlines():
strLineList = line.strip().split(" ")
numLineList = [int(j) for j in strLineList]
dataMat.append(numLineList)
return dataMat
2.loadDataSet
输入:文件名
作用:读入文件中的矩阵(制表符和换行符分隔)输出:二维列表(datatype_float)
def loadDataSet(fileName): #general function to parse tab -delimited floats
dataMat = [] #assume last column is target value
fr = open(fileName)
for line in fr.readlines():
curLine = line.strip().split(" ")
fltLine = map(float,curLine) #map all elements to float()
dataMat.append(fltLine)
return dataMat
三、读入文件中的矩阵数据转换为向量
mat2vec(fileName)
输入:文件名
作用:将文件中的矩阵转(空格和换行符分隔)换为向量读入
输出:一维列表
def mat2vec(fileName):
fr = open(fileName)
vec = [int(j) for j in fr.read().strip().replace(" "," ").split(" ")]
fr.close()
return vec
四、将二维列表写入txt文件
使用pandas包中的to_csv方法
import pandas as pd df = pd.DataFrame(data)
df.to_csv(fileName,header= False, index = False,sep = " ")
五、读取mat文件中的数据
使用scipy.io中的loadmat函数
import scipy.io
data = scipy.io.loadmat(fileName) # data是一个字典
data.keys() # 用keys方法查看字典的键
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。