python3 讀取txt、csv、mat檔案資料並存入array具體實現
阿新 • • 發佈:2018-12-19
1、讀取txt檔案
下面的程式碼中需要設定你讀取資料的陣列的維度資訊,如下
datamat = np.zeros((rows, 6)) #表示6列資料
# -*- coding: cp936 -*- import re import linecache import numpy as np import os filename = 'preprocess1.txt' # 數值文字檔案轉換為雙列表形式[[...],[...],[...]],即動態二維陣列 # 然後將雙列表形式通過numpy轉換為陣列矩陣形式 # 數值文字檔案直接轉換為矩陣陣列形式方法二 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, 6)) # 初始化矩陣 row = 0 for line in lines: line = line.strip().split('\t') # strip()預設移除字串首尾空格或換行符 print(line) 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, 6)) # 初始化矩陣 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 datamat '''if __name__ == '__main__': filename = 'winedata.txt' # 二維列表 data = txt_to_matrix(filename) print (data) print(data.__len__()) #out = text_read('winedata.txt') #print(out)'''
2、讀取csv檔案
在python中內建了csv庫,通過呼叫相關函式即可實現檔案的讀取,將csv檔案讀取載入到陣列可以採用python的pandas庫中的read_csv()
函式來讀取。具體實現如下:
import numpy as np import pandas as pd import os df = pd.read_csv('preprocess.csv') #返回一個DataFrame的物件,這個是pandas的一個數據結構 df.columns=["Col1","Col2","Col3","Col4","Col5","Col6","Col7","Col8"] X = df[["Col1","Col2","Col3","Col4","Col5","Col6","Col7"]] #抽取前七列作為訓練資料的各屬性值 X = np.array(X) print X y1 = df["Col8"] #最後一列作為每行對應的標籤label Y = np.array(y1) print Y
3、mat檔案讀取
python的scipy中有專門的函式來方便.mat的檔案的載入和儲存,具體實現所示,
import scipy.io as sio import numpy as np ###下面是講解python怎麼讀取.mat檔案以及怎麼處理得到的結果### load_fn = 'xxx.mat' load_data = sio.loadmat(load_fn) load_matrix = load_data['matrix'] #假設檔案中存有字元變數是matrix,例如matlab中save(load_fn, 'matrix');當然可以儲存多個save(load_fn, 'matrix_x', 'matrix_y', ...); load_matrix_row = load_matrix[0] #取了當時matlab中matrix的第一行,python中陣列行排列 ###下面是講解python怎麼儲存.mat檔案供matlab程式使用### save_fn = 'xxx.mat' save_array = np.array([1,2,3,4]) sio.savemat(save_fn, {'array': save_array}) #和上面的一樣,存在了array變數的第一行 save_array_x = np.array([1,2,3,4]) save_array_y = np.array([5,6,7,8]) sio.savemat(save_fn, {'array_x': save_array_x, 'array_x': save_array_x}) #同理,只是存入了兩個不同的變數供使用