适合文件更改

2024-09-26 22:42:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有导师给我的一些数据。数据由数千个.fits文件组成。一些.fits文件是其他文件的旧版本,数据表的构造方式也不同。我的意思是:

假设我有两个.fits文件:FITS1.fits和FITS2.fits

$ python
>>> import pyfits
>>> a = pyfits.getdata('FITS1.fits')
>>> b = pyfits.getdata('FITS2.fits')
>>> a.names
['time', 'timeerr', 'sap_flux', 'sap_flux_err']
>>> b.names
['time', 'sap_flux', 'timeerr', 'sap_flux_err']

有人知道我可以在数据表中切换列的方法吗?所以FITS2.fits的格式与FITS1.fits相似?在


Tags: 文件数据timenames数据表errsapfits
2条回答

你不应该编写依赖于字典中键顺序的代码——字典是一个哈希表,它们的存储顺序本质上是任意的。 如果您需要匹配或比较条目,您应该获得一个键列表并对它们进行排序。在

pyfits很可能按照键存储在FITS头中的顺序来构建字典,但这并不一定正确。在

最好的办法是不要直接使用pyfits,而是使用更新的、更闪亮的Astropy Table接口。您可以在FITS表格中阅读:

from astropy.table import Table
table = Table.read('FITS1.fits')

modifying tables一节所示,您可以对列重新排序,如下所示:

^{pr2}$

(从技术上讲,这将创建表的一个新副本,列按您希望的顺序选定;但是IIRC不会复制底层列数组,应该仍然是一个快速操作)。在

使用遗留的pyfits接口也完全可以做到这一点,但我不建议在大多数情况下使用它。在

相关问题 更多 >

    热门问题