我有数十万个数据文本文件要阅读。到目前为止,我每次运行代码时都会从文本文件中导入数据。也许简单的解决方案是简单地将数据重新格式化为文件,以便更快地读取。无论如何,现在我拥有的每个文本文件都如下所示: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
提交
取消