我有一个包含二进制表的 60GB FITS 文件。我想一次读取(并处理)该表一行/条目/行/块*。
(*我不确定正确的命名法)
我正在使用 pyfits,我想做的归结为:
import pyfits
hdulist = = pyfits.open("file.fits")
# the binary table has to be in the 2nd extension
# hence it is in hdulist[1]
n_entries = hdulist[1].header['NAXIS2']
for i in xrange(n_entries):
entry = hdulist[1].data[i] # I am confused what happens at this step
# now do stuff with the values in entry
# .....
该变量entry
具有类型<class 'pyfits.fitsrec.FITS_record'>
,并且长度等于二进制表中的列数。然而,似乎发生的是整个二进制表在这一行被读入内存:entry = hdulist[1].data[i]
.
我已经查看了 pyfits 文档,但我找不到任何方法似乎可以从表条目的表条目(或一次少量条目)上从二进制表扩展读取数据。我不想从表中选择某些条目,只需按顺序扫描它们即可。
我想我的问题是:
0) 这一步发生了hdulist[1].data[i]
什么?为什么所有内容都被读入内存?(有没有办法解决这个问题?)
1)我错过了什么,pyfits 真的可以做我想做的吗?
2)那里有另一个python库吗?(即在 FITS 扩展中使用二进制表)
3)如果不是,我可以用不同的二进制(或其他压缩/非 ascii)格式(不是 FITS)重写数据并找到其他一些 python 库或模块来做我想做的事吗?