为了账号安全,请及时绑定邮箱和手机立即绑定

提高速度numpy.loadtxt?

提高速度numpy.loadtxt?

慕容森 2021-11-23 16:57:32
我有数十万个数据文本文件要阅读。到目前为止,我每次运行代码时都会从文本文件中导入数据。也许简单的解决方案是简单地将数据重新格式化为文件,以便更快地读取。无论如何,现在我拥有的每个文本文件都如下所示: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_csvwithskip_blank_lines=True应该会为您处理。要从 a 中numpy.ndarray获取 a pandas.DataFrame,只需执行dataframe.values


查看完整回答
反对 回复 2021-11-23
  • 1 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信