我有导师给我的一些数据。数据由数千个.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相似?在
你不应该编写依赖于字典中键顺序的代码——字典是一个哈希表,它们的存储顺序本质上是任意的。 如果您需要匹配或比较条目,您应该获得一个键列表并对它们进行排序。在
pyfits很可能按照键存储在FITS头中的顺序来构建字典,但这并不一定正确。在
最好的办法是不要直接使用pyfits,而是使用更新的、更闪亮的Astropy Table接口。您可以在FITS表格中阅读:
如modifying tables一节所示,您可以对列重新排序,如下所示:
^{pr2}$(从技术上讲,这将创建表的一个新副本,列按您希望的顺序选定;但是IIRC不会复制底层列数组,应该仍然是一个快速操作)。在
使用遗留的pyfits接口也完全可以做到这一点,但我不建议在大多数情况下使用它。在
相关问题 更多 >
编程相关推荐