做百度企业网站,江都微信网站建设,网页设计师月薪,永州网站建设企业# -*- coding: utf-8 -*-#----------------------------------------------------------------------# FileName:gettxtdata.py#功能:读取字符串和文件中的数值数据(浮点数)#主要提供类似matlab中的dlmread和dlmwrite函数#同时提供loadtxtdata和savetxtdata函数#Data: 2013-1-1…# -*- coding: utf-8 -*-#----------------------------------------------------------------------# FileName:gettxtdata.py#功能:读取字符串和文件中的数值数据(浮点数)#主要提供类似matlab中的dlmread和dlmwrite函数#同时提供loadtxtdata和savetxtdata函数#Data: 2013-1-10#Author:吴徐平#----------------------------------------------------------------------import numpy#----------------------------------------------------------------------def StringToDoubleArray(String):#将字符串中的所有非Double类型的字符全部替换成空格#以#开头注释直至行尾,都被清空#返回一维numpy.array数组from StringIO import StringIOimport reDataArraynumpy.empty([0],numpy.float64)if len(String.strip())0:#清空注释行,都是以#开头子字符doublestringre.sub(#.*$, , String, count0, flagsre.IGNORECASE)#删除非数字字符doublestringre.sub([^0-9.e-], , doublestring, count0, flagsre.IGNORECASE)#去掉不正确的数字格式(代码重复是有必要的)doublestringre.sub([.e-](?\s), , doublestring, count0, flagsre.IGNORECASE)doublestringre.sub([.e-](?\s), , doublestring, count0, flagsre.IGNORECASE)doublestringre.sub([e-]$, , doublestring, count0, flagsre.IGNORECASE)doublestringre.sub([e-]$, , doublestring, count0, flagsre.IGNORECASE)#去掉首尾空格doublestringdoublestring.strip()if len(doublestring)0:StrIOdsStringIO(doublestring)DataArray numpy.genfromtxt(StrIOds)return DataArray#----------------------------------------------------------------------def GetDoubleListFromString(String):#使用换行符分割字符串#将字符串中的所有非Double类型的字符全部替换成空格#以#开头注释直至行尾,都被清空#将每一行转换成numpy.array数组#返回numpy.array数组的列表from StringIO import StringIOimport reDoubleList[]StringListString.split(\n)#使用换行符分割字符串for Line in StringList:if len(Line.strip())0:#清空注释行,都是以#开头子字符doublestringre.sub(#.*$, , Line, count0, flagsre.IGNORECASE)#删除非数字字符doublestringre.sub([^0-9.e-], , doublestring, count0, flagsre.IGNORECASE)#去掉不正确的数字格式(代码重复是有必要的)doublestringre.sub([.e-](?\s), , doublestring, count0, flagsre.IGNORECASE)doublestringre.sub([.e-](?\s), , doublestring, count0, flagsre.IGNORECASE)doublestringre.sub([e-]$, , doublestring, count0, flagsre.IGNORECASE)doublestringre.sub([e-]$, , doublestring, count0, flagsre.IGNORECASE)#去掉首尾空格doublestringdoublestring.strip()if len(doublestring)0:StrIOdsStringIO(doublestring)DoubleList.append(numpy.genfromtxt(StrIOds))return DoubleList#----------------------------------------------------------------------def GetDoubleListFromFile(FileName):#将文本文件中的所有Double类型的字符全部替换成numpy.array数组#每一行都是numpy.array数组##返回numpy.array数组的列表#注意:返回列表的每个元素又都是一个numpy.array数组#注意:返回列表的每个元素(或文件每行)可以包含不同多个数的数字fileopen(FileName, r)read_file file.read()file.close()DoubleListGetDoubleListFromString(read_file)return DoubleListdef dlmread(FileName,dtypenumpy.float64):#Load Data From Txt-File.#分隔符默认是:;,,,空格类 (包括\t)等等#以#开头的被认为是注释,不会被读取#Return Value:二维数值数组(numpy.ndarray)#对文本中数据的排列格式要求最低,且容许出现注释字符,智能化程度最高,但速度较慢DoubleListGetDoubleListFromFile(FileName)dlsize[]#每一行数组的大小for dL in DoubleList:dlsize.append(dL.size)MinColumnSizemin(dlsize)#数组的最大列数MaxColumnSizemax(dlsize)#数组的最小列数#数组创建和赋值DoubleArraynumpy.empty([len(DoubleList),MinColumnSize],dtypedtype)rowrange(0,len(DoubleList))columrange(0,MinColumnSize)for i in row:for j in colum:DoubleArray[i][j]DoubleList[i][j]return DoubleArray#----------------------------------------------------------------------def loadtxtdata(filename,delimiter):#Load Data From Txt-File with delimiter.#分隔符默认是:;,,,空格类 (包括\t)和自定义的delimiter等#Return Value: 二维数值数组(numpy.ndarray)#对文本中数据的排列格式要求较高,且不容许出现注释字符,智能化程度较低,但速度较快from StringIO import StringIOimport refile_handleopen(filename,r)LinesALLfile_handle.read()#读入字符串file_handle.close()DelimiterALLdelimiter,;#分隔符SpaceString #空格for RChar in DelimiterALL:LinesALLLinesALL.replace(RChar,SpaceString)return numpy.genfromtxt(StringIO(LinesALL))#----------------------------------------------------------------------def savetxtdata(filename, X, fmt%.8e, delimiter , newline\n):Save Data To Txt-File.numpy.savetxt(filename, X, fmtfmt, delimiterdelimiter, newlinenewline)return True#----------------------------------------------------------------------def dlmwrite(filename, X, fmt%.8e, delimiter , newline\n):Save Data To Txt-File.numpy.savetxt(filename, X, fmtfmt, delimiterdelimiter, newlinenewline)return True#----------------------------------------------------------------------#测试程序#----------------------------------------------------------------------if __name__ __main__:#生成随机数datanumpy.random.randn(3,4)filenameD:/x.txt#写入文件dlmwrite(filename,data)xGetDoubleListFromFile(filename)print(x)print(dlmread(filename))yStringToDoubleArray(79l890joj)print(y)zloadtxtdata(filename)print(z)我只在python2.7中试过,如果要在python3.x中使用,可自行测试.本文原创发布php中文网转载请注明出处感谢您的尊重