提高速度numpy.loadtxt?

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


User: unknown

Title : OE1_CHANNEL1_20181204_103805_01

Sample data     

Wavelength  OE1_CHANNEL1    

185.000000  27.291955


186.000000  27.000877


187.000000  25.792290


188.000000  25.205620


189.000000  24.711882


.

.

.

我读取和导入txt文件的代码是:


# IMPORT DATA

path = '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 当作一行......


慕容森
浏览 422回答 1
1回答

互换的青春

如果你有一个大文件而不是许多小文件,它可能会快得多。这通常更有效。此外,您可以通过numpy直接保存数组并加载该.npy文件而不是读取大型文本文件来提高速度。不过我对最后一部分不太确定。与往常一样,当时间很重要时,我会尝试这两个选项,然后衡量性能改进。如果由于某种原因你真的不能只有一个大的文本文件/.npy文件,你也可以通过使用例如multiprocessing让多个工作人员同时读取文件来提高速度。然后你可以在最后将矩阵连接在一起。不是你的主要问题,但因为它似乎是一个问题 - 你可以重写文本文件以不包含那些额外的换行符,但我认为np.loadtxt不能忽略它们。pandas但是,如果您愿意使用,pandas.read_csvwithskip_blank_lines=True应该会为您处理。要从 a 中numpy.ndarray获取 a pandas.DataFrame,只需执行dataframe.values。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python