python处理FITS 3:处理头文件和数据单元

1头文件处理

在获得hdul后,可以使用两个属性.header .data分别获得头文件和数据单元

>>>hdul=fits.open(fits_image_filename)
>>>hdul[0].header['DATE']
'01/04/99'

.header可以获得对应HDU的头文件,而头文件中各个关键词条目可以被通过使用关键词的名称如'DATE'进行索引。
当然也可以通过数字进行索引。不过不建议用数值,因为你不知道到底你要找的那个关键词条目在第几个。
修改对应的值也很简单,直接赋值即可,一般不需要,除非是你要制作FITS文件,否则不要随便修改FITS文件的内容。
关键词对应的解释也可以获得

>>> hdr = hdul[0].header
>>> hdr['targname'] = ('NGC121-a', 'the observation target')
>>> hdr['targname']
'NGC121-a'
>>> hdr.comments['targname']
'the observation target'

那么怎么知道里面有哪些关键词呢?可以直接输入

>>>hdr
SIMPLE  =                    T / file does conform to FITS standard
BITPIX  =                   16 / number of bits per data pixel
NAXIS   =                    0 / number of data axes
...

或者输入

>>> list(hdr.keys())  
['SIMPLE', 'BITPIX', 'NAXIS', ...]

2图像文件处理

如果HDU的数据是图像,那么.data将会返回一个ndarray对象(numpy的n维数组)
使用上一个博客中的hdul

>>>data=hdul[1].data

获得了第二个HDU的数据单元,第一个HDU没有数据,你应该记得如果你看了上一个博客的话。
ndarray的操作很简单,按照正常的数组索引,取值都非常容易。

>>> data.shape
(40, 40)
>>> data.dtype.name
'int16'
>>> print(data[1, 4])
348

3处理数据表格

这种数据也比较常见,比如随时间变化各个物理量的变化就可以组成一个表格
用官网的例子作为示意,此时你应该确定它确实是表格类型的数据单元,可以从.info()看出
table
可以注意到第二个HDU的类型是二进制表,一共47785967行,7列。
此时使用

>>>data[0]

返回第一行的数据
其实一般取出一列的数据较为有用,因为一列数据正好是一个物理量的变化情况。

data.field(0)

取出第一列数据
也可以使用关键词

data.field('c1')

那么怎么知道关键词是什么呢?

>>>cols=hdul[1].columns
>>>cols.info()

或者

>>>cols.names

把数据读到python的数据结构数组中就很好处理了,画图也很容易,不过就不在这篇博客的讨论范围了。

猜你喜欢

转载自blog.csdn.net/zaq15csdn/article/details/81255878