我有一个包含二进制表的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属于类型,其长度等于二进制表中的列数。然而,似乎发生的事情是二进制表的整个被读入内存中的这行:entry = hdulist[1].data[i]。在
我已经看过pyfits文档,但是我找不到任何一个方法可以从二进制表扩展中逐个表条目读取数据(或者一次读取一小组条目)。我不想从表中选择某些条目,只需按顺序浏览它们。在
我想我的问题是:
0)在hdulist[1].data[i]步骤发生了什么?为什么一切都被读入记忆?(有什么办法吗?)在
1)我是否错过了什么,pyfits真的可以为所欲为吗?在
2)有没有另一个python库可以呢?
(即在FITS扩展中使用二进制表)
3)如果没有,我可以用不同的二进制(或其他压缩/非ascii)格式(不适合)重新写入数据,并找到其他python库或模块来执行我想要的操作吗?在