阿谀奉承:从fits表操作图像数据?(例如,3072R x 2C)

2024-09-27 09:35:21 发布

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

我现在对一个fits文件有点小问题。数据是表格式的,我以前没有用过这种格式。我是一个python用户,非常依赖阿谀奉承操纵拟合图像。信息的快速输出提供:

No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU      60   ()              
1                BinTableHDU     29   3072R x 2C   [1024E, 1024E]

BinTableHDU的标题如下:

^{pr2}$

我想访问存储在标签为“COUNT-RATE”的TTYPE中的fits图像,然后以一种格式将其添加到其他具有相同维度的计数率数组中。在

我从打开fits文件的常用产品开始:

hdulist_RASS_SXRB_R1 = fits.open('/Users/.../RASS_SXRB_R1.fits')
hdulist_RASS_SXRB_R1.info()
image_XRAY_SKYVIEW_R1 = hdulist_RASS_SXRB_R1[1].data
image_XRAY_SKYVIEW_R1 = numpy.array(image_XRAY_SKYVIEW_R1)
image_XRAY_SKYVIEW_header_R1 = hdulist_RASS_SXRB_R1[1].header

但这是回来的IndexError: too many indices for array。我已经在astropy文档中查看了访问表数据(Accessing data stored as a table in a multi-extension FITS (MEF) file

如果有人有一个尝试和测试的方法,访问这样的图片从一个fits表,我将非常感谢!非常感谢。在


Tags: 文件数据图像imagedata格式arrayfits
2条回答

我不能肯定没有看到完整的回溯,但我认为你得到的例外是:

image_XRAY_SKYVIEW_R1 = numpy.array(image_XRAY_SKYVIEW_R1)

没有理由手动将numpy.array()环绕数组。它已经是一个Numpy阵列了。但在本例中,它是一个结构化数组(参见http://docs.scipy.org/doc/numpy/user/basics.rec.html)。在

@仙女座93的答案是正确的。但也可以看到关于这个的一般文档:http://docs.astropy.org/en/stable/io/fits/index.html#working-with-table-data

但是,手动调用fits.open、访问HDU的.data属性等工作方式(这对图像来说很好)是相当低级的,Numpy结构的数组很擅长表示表,但对于操作它们来说却不是很好。在

你最好使用Astropy的高级^{}接口。FITS表可以通过Table.read():http://docs.astropy.org/en/stable/io/unified.html#fits直接读入Astropy Table对象

FITS-images不存在同样的情况的唯一原因是还没有一个通用的“Image”类。在

我用过astropy.io.适合在天体物理学实习期间,这是我打开文件的过程。安装并进行一些操作:

# Opening the .fits file which is named SMASH.fits
field = fits.open(SMASH.fits)         

# Data fits reading  
tbdata = field[1].data 

现在,使用这种方法,tbdata是一个数字阵列你可以做很多东西。在

例如,如果您有以下数据:

^{pr2}$

如果要按一个条件打印数据:

Data_name = tbdata['Name']

您将获得:

HD 1527
HD 7836
NGC 6739

我不知道你到底想要什么样的数据,但我可以帮你;)

相关问题 更多 >

    热门问题