在python中读取fits文件

2024-10-03 23:24:01 发布

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

从fits文件读取数据时出现问题。通常我可以很好地从fits文件中读取数据,但是现在我有一些数据文件,这给了我一些问题。 当我试图读取该文件时,它应该包含三列和一个标题,我得到的只是一个类似于以下内容的数字表:

[[64 195 45…,0 0 0]]

现在这是整数,数据文件实际上应该包含三列,包含double和float,分为三列,如下所示:

[9819.3801,0.00000,0.00000]

[9820.0025,5.50764e-16,1.62396e-16]

[820.6248,-3.75781e-17,1.51864e-16]

我知道应该获取这些值,因为IDL中名为mrdfits的包可用于检索这些值。我尝试过查看fits文件包含的数据类型和格式,我的代码如下所示:

f=pyfits.open('filename')

dat =f[1].data

print f.info

>> No.    Name         Type      Cards   Dimensions   Format

>> 0    PRIMARY     PrimaryHDU       4  ()            uint8

>> 1    PRIMARY     PrimaryHDU     576  (156288, 1)   uint8

>> None

print pyfits.getval('filename','xtension',1)

>> BINTABLE

print dat

>> [[ 64 195  45 ...,   0   0   0]]

我的问题基本上是,有没有其他方法可以读入数据,这样它就可以得到三列非整数数据?我想知道是不是因为这个文件是一个BINTABLE文件,所以它的读取方式与通常不同?有没有其他方法可以加载这三列,而不是我现在所做的? 如果你需要我澄清一些问题,请你问,因为我已经尝试了很多事情,我不知道该走哪个方向。 任何帮助都将不胜感激!在


Tags: 文件数据方法数据文件整数读取数据filenamedat
1条回答
网友
1楼 · 发布于 2024-10-03 23:24:01

一旦你下载了PyFITS,你就可以开始了!要使用PyFITS并从FITS文件中获取信息,下面是一个使用三列的小示例。在

import pyfits

# Load the FITS file into the program
hdulist = pyfits.open('Your FITS file name here')

# Load table data as tbdata
tbdata = hdulist[1].data

fields = ['J','H','K'] #This contains your column names
var = dict((f, tbdata.field(f)) for f in fields) #Creating a dictionary that contains
                                                 #variable names J,H,K

#Now to call column J,H and K just use
J = var['J']   
H = var['H']
K = var['K']

现在上面的例子有三列,标题是J,H,K。现在可以通过分别说J,H,K来调用它们。在

您在代码中所做的是打印f.info,这只会给您FITS文件的头信息和其他信息。它不会打印列和信息。在

相关问题 更多 >