一,、txt文件數據載入到數組 這里結合上一篇博文的數據來講怎么方便的載入.txt文件到一個數組,,數據如下所示: 1、自己寫Python代碼實現txt文本數據讀取并載入成數組形式(PS:下面給了三種方法,,選擇理解) # -*- coding: cp936 -*-import reimport linecacheimport numpy as npimport osfilename = 'preprocess1.txt'#數值文本文件轉換為雙列表形式[[...],[...],[...]],即動態(tài)二維數組#然后將雙列表形式通過numpy轉換為數組矩陣形式def txt_strtonum_feed(filename): data = [] with open(filename, 'r') as f:#with語句自動調用close()方法 line = f.readline() while line: eachline = line.split()###按行讀取文本文件,,每行數據以列表形式返回 read_data = [ float(x) for x in eachline[0:7] ] #TopN概率字符轉換為float型 lable = [ int(x) for x in eachline[-1] ]#lable轉換為int型 read_data.append(lable[0]) #read_data = list(map(float, eachline)) data.append(read_data) line = f.readline() return data #返回數據為雙列表形式#數值文本文件直接轉換為矩陣數組形式方法二def txt_to_matrix(filename): file=open(filename) lines=file.readlines() #print lines #['0.94\t0.81\t...0.62\t\n', ... ,'0.92\t0.86\t...0.62\t\n']形式 rows=len(lines)#文件行數 datamat=np.zeros((rows,8))#初始化矩陣 row=0 for line in lines: line=line.strip().split('\t')#strip()默認移除字符串首尾空格或換行符 datamat[row,:]=line[:] row+=1 return datamat#數值文本文件直接轉換為矩陣數組形式方法三def text_read(filename): # Try to read a txt file and return a matrix.Return [] if there was a mistake. try: file = open(filename,'r') except IOError: error = [] return error content = file.readlines() rows=len(content)#文件行數 datamat=np.zeros((rows,8))#初始化矩陣 row_count=0 for i in range(rows): content[i] = content[i].strip().split('\t') datamat[row_count,:] = content[i][:] row_count+=1 file.close() return datamatif __name__ == '__main__': test_content = txt_strtonum_feed('preprocess1.txt') content = np.array(test_content) print content #矩陣數組形式 print '\n' print test_content #二維列表 data = txt_to_matrix(filename) print data out = text_read('preprocess1.txt') print out 代碼編譯所得結果如下圖所示(其中方法一思路是先得到動態(tài)二維數組,即二維列表的形式,,最后在mian函數里使用np.arry()函數將其轉換為數組形式,,這里將兩種形式結果都輸出): 2、調用numpy中
import numpy as npimport osdata1=np.loadtxt('preprocess1.txt',delimiter='\t') #delimiter參數依據原始文本數據每行數字之間符號,,這里為\tnp.savetxt('data3.txt',data1,fmt='%5.3f',delimiter='\t',newline=os.linesep) #將讀取的文件保存到另一文本 二,、CSV文件數據載入到數組 在一些數據競賽里面碰到很多的數據都是.csv文件給出的,說明應用應該還是有一些廣泛,。首先這里csv文件編碼格式必須為UTF-8,,否則會報編碼錯誤信息。(txt轉csv文件流程:打開excel—>數據—>導入文本/csv—>編碼格式選擇UTF-8—>保存選擇csv格式),。csv文件打開如下所示: 首先python內置了csv庫,,可以調用然后自己手動來寫操作的代碼,比較簡單的csv文件讀取載入到數組可以采用python的pandas庫中的
三,、mat文件數據載入到數組 .mat文件是MATLAB存儲數據的標準格式,,很多的機器學習任務用.MAT來存出數據文件。python的scipy中有專門的函數來方便.mat的文件的載入和存儲,,具體函數如下所示,,實現就一行代碼這里就不展示了,可以自行參考其他資料,。 scipy.io.loadmat(file_name, mdict=None, appendmat=True, **kwargs) #載入MATLAB文件#保存一個帶有名稱和序列的字典到.mat文件中scipy.io.savemat(file_name, mdict, appendmat=True, format=’5’, long_field_names=False, do_compression=False, oned_as=’row’) |
|