performance - 如何快速遍历许多 .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 个文件执行此操作的功能)?天呐!
解决方案
推荐阅读
- node.js - FieldPath 字段名称可能不以“$”开头
- python - 将一个迭代序列乘以另一个迭代序列
- r - 有人可以向我解释为什么这个平等测试不起作用吗?
- angular - Angular Sanctum 基于会话的跨域 CSRF Cookie
- html - 使用 Visual Studio Code 在经典 ASP 中测试 HTML
- apache-kafka-streams - KStream - KTable join:使用 Ktable 数据丰富流
- jquery - bootstrap 和 jquery 甚至都不会加载 CDN 链接
- javascript - BIRT 图表:如何隐藏标签之间的 X 轴刻度?
- animation - 滚动后的Highcharts动画不起作用
- elasticsearch - ElasticSearch 查询嵌套路径过滤器或