Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python astropy.fits:处理fits表中的图像数据?(例如3072R x 2C)_Python_Arrays_Numpy_Astropy_Fits - Fatal编程技术网

Python astropy.fits:处理fits表中的图像数据?(例如3072R x 2C)

Python astropy.fits:处理fits表中的图像数据?(例如3072R x 2C),python,arrays,numpy,astropy,fits,Python,Arrays,Numpy,Astropy,Fits,我目前对fits文件有点小问题。数据是表格格式,我以前没有使用过这种格式。我是python用户,非常依赖astropy.fits来处理fits图像。信息的快速输出提供: No. Name Type Cards Dimensions Format 0 PRIMARY PrimaryHDU 60 () 1 BinTableHDU 29 3072R x 2C [

我目前对fits文件有点小问题。数据是表格格式,我以前没有使用过这种格式。我是python用户,非常依赖astropy.fits来处理fits图像。信息的快速输出提供:

No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU      60   ()              
1                BinTableHDU     29   3072R x 2C   [1024E, 1024E]
BinTableHDU的标题如下所示:

XTENSION= 'BINTABLE'           /Written by IDL:  Mon Jun 22 23:28:21 2015       
BITPIX  =                    8 /                                                
NAXIS   =                    2 /Binary table                                    
NAXIS1  =                 8192 /Number of bytes per row                         
NAXIS2  =                 3072 /Number of rows                                  
PCOUNT  =                    0 /Random parameter count                          
GCOUNT  =                    1 /Group count                                     
TFIELDS =                    2 /Number of columns                               
TFORM1  = '1024E   '           /Real*4 (floating point)                         
TFORM2  = '1024E   '           /Real*4 (floating point)                         
TTYPE1  = 'COUNT_RATE'         /                                                
TUNIT1  = '1e-6cts/s/arcmin^2' /                                                
TTYPE2  = 'UNCERTAINTY'        /                                                
TUNIT2  = '1e-6cts/s/arcmin^2' /
HISTORY g000m90r1b120pm.fits created on 10/08/97. PI channel range:  8: 19      
PIXTYPE = 'HEALPIX '           / HEALPIX pixelisation                           
ORDERING= 'NESTED  '           / Pixel ordering scheme, either RING or NESTED   
NSIDE   =                  512 / Healpix resolution parameter                   
NPIX    =              3145728 / Total number of pixels                         
OBJECT  = 'FULLSKY '           / Sky coverage, either FULLSKY or PARTIAL        
FIRSTPIX=                    0 / First pixel # (0 based)                        
LASTPIX =              3145727 / Last pixel # (zero based)                      
INDXSCHM= 'IMPLICIT'           / indexing : IMPLICIT or EXPLICIT                
GRAIN   =                    0 / GRAIN = 0: No index,                           
COMMENT         GRAIN =1: 1 pixel index for each pixel,                         
COMMENT         GRAIN >1: 1 pixel index for Grain consecutive pixels            
BAD_DATA=         -1.63750E+30 / Sentinel value given to bad pixels             
COORDSYS= 'G       '           / Pixelization coordinate system                 
COMMENT         G = Galactic, E = ecliptic, C = celestial = equatorial          
END
我想访问fits图像,它存储在标记为“COUNT-RATE”的TTYPE中,然后以某种格式将其添加到具有相同维度的其他COUNT-RATE数组中

我从打开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
但这是由于
索引器返回的错误:数组的索引太多。我在这里查看了astropy文档中的表数据访问()


如果有人有一个尝试和测试的方法来访问这样的图像从一个fits表我会非常感激!非常感谢。

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

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

# Data fits reading  
tbdata = field[1].data 
现在,使用这种方法,tbdata是一个numpy.array,您可以制作很多东西

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

ID, Name, Object
1, HD 1527, Star
2, HD 7836, Star
3, NGC 6739, Galaxy
如果要按一个条件打印数据:

Data_name = tbdata['Name']
您将获得:

HD 1527
HD 7836
NGC 6739

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

如果没有看到完整的回溯,我无法确定,但我认为您得到的例外是:

image_XRAY_SKYVIEW_R1 = numpy.array(image_XRAY_SKYVIEW_R1)
没有理由在数组周围手动换行
numpy.array()
。它已经是一个Numpy数组了。但在本例中,它是一个结构化数组(请参阅)

@仙女座93号的答案是正确的。但有关这方面的一般文档,请参见:

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

您最好使用Astropy的高级界面。FITS表格可以通过
表格直接读取到Astropy
表格
对象中。read()


FITS images不存在相同内容的唯一原因是还没有通用的“Image”类。

PIXTYPE
ORDERING
关键字表明这是一张地图。您可能希望安装并尝试改用。(例如,尝试使用
healpy.read_map()
。请参阅healpy教程。)@Evert非常感谢Evert,我现在就来试试。@Evert那么,我如何通过阅读healpy地图来创建X X X Y fits图像呢?我现在已经成功地创建了一个新的fits文件,其中3072R x 1C作为尺寸…?@Evert最终我希望能够读取多个HEALPix映射,然后将它们共同添加以查看复合“映射”。我认为您可以将所有HEALPix映射“重新分级”到相同的nside参数(和相同的嵌套),然后您可以简单地添加像素值,并将它们作为healpix贴图再次写入。您想创建(完整天空)的原因是什么x-y图而不是healpy图?我有五个fits文件,我想将每个图像中的计数添加到另一个图像中。因此我有一个合成图像。@user3125347您想从每个文件中计算一些计数吗?您能从fits文件中举出一个例子吗?我只想看看您的数据文件;)如果您看到上面的评论,您应该看到一个指向网站wh的链接ich有和我一样的fits文件…你能下载它们看看它们的结构吗…?@user312547我看到了
PCOUNT=0/随机参数计数
GCOUNT=1/组计数
。你想计算哪一个?我在网站上找不到下载fits文件的链接这里有一些fits文件,但它们是所有的标准化和结构都以相同的方式。让我们先运行PCOUNT。一旦我知道我的脚本正在添加“某物”,我可以随时更改此细节: