我有數十萬個數據文本文件要閱讀。到目前為止,我每次運行代碼時都會從文本文件中導入數據。也許簡單的解決方案是簡單地將數據重新格式化為文件,以便更快地讀取。無論如何,現在我擁有的每個文本文件都如下所示:User: unknownTitle : OE1_CHANNEL1_20181204_103805_01Sample data Wavelength OE1_CHANNEL1 185.000000 27.291955186.000000 27.000877187.000000 25.792290188.000000 25.205620189.000000 24.711882...我讀取和導入txt文件的代碼是:# IMPORT DATApath = 'T2'if len(sys.argv) == 2: path = sys.argv[1]files = os.listdir(path)trans_import = []for index, item in enumerate(files): trans_import.append(np.loadtxt(path+'/'+files[1], dtype=float, skiprows=4, usecols=(0,1)))結果數組在變量資源管理器中查找為:{ndarray} = [[185. 27.291955]\n [186. 27.000877]\n ... ]我想知道,我怎樣才能加快這部分的速度?到目前為止,僅導入約 4k 文本文件所需的時間有點長。每個文本文件(譜)中有 841 行。我用這段代碼得到的輸出是 841 * 2 = 1682。顯然,它把 \n 當作一行......
1 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
如果你有一個大文件而不是許多小文件,它可能會快得多。這通常更有效。此外,您可以通過numpy
直接保存數組并加載該.npy
文件而不是讀取大型文本文件來提高速度。不過我對最后一部分不太確定。與往常一樣,當時間很重要時,我會嘗試這兩個選項,然后衡量性能改進。
如果由于某種原因你真的不能只有一個大的文本文件/.npy
文件,你也可以通過使用例如multiprocessing
讓多個工作人員同時讀取文件來提高速度。然后你可以在最后將矩陣連接在一起。
不是你的主要問題,但因為它似乎是一個問題 - 你可以重寫文本文件以不包含那些額外的換行符,但我認為np.loadtxt
不能忽略它們。pandas
但是,如果您愿意使用,pandas.read_csv
withskip_blank_lines=True
應該會為您處理。要從 a 中numpy.ndarray
獲取 a pandas.DataFrame
,只需執行dataframe.values
。
添加回答
舉報
0/150
提交
取消