首页 > 解决方案 > 如何快速遍历许多 .fits 文件?

问题描述

我需要使用 python 从大约 20k 不同的 .fits 文件中的几列中提取信息(.fits 文件是天体物理学中经常使用的表格文件)。每个文件都比较小,~0.2MB。到目前为止,我一直在用一个循环来做这件事,astropy就像这样:

from astropy.io import fits

data = []
for file_name in fits_files_list:
    with fits.open(file_name, memmap=False) as hdulist:
        lam = np.around(10**hdulist[1].data['loglam'], 4)
        flux = np.around(hdulist[1].data['flux'], 4)
        z = np.around(hdulist[2].data['z'], 4)
    data.append([lam, flux, z])

这需要 20k 适合文件 ~2.5 小时,并且出于其他原因,我不时需要遍历文件。我在一个谷歌 colab 笔记本上编写了这个循环,我的文件存储在我的谷歌驱动器中。

所以我的问题是:我可以尽量减少循环的时间吗?你知道除了astropy之外的其他包可以帮助我吗?或者你知道我是否可以改变我的算法以使其运行得更快,例如以某种方式矢量化循环?或者一些软件可以快速将 20k 拟合文件堆叠成一个拟合文件(TOPCAT 没有对超过 2 个文件执行此操作的功能)?天呐!

标签: performanceloopsastropyastronomyfits

解决方案


推荐阅读