2014-11-02 5 views
-1

맞는 파일에서 데이터를 읽는 데 문제가 있습니다. 보통 나는 맞는 파일에서 데이터를 읽을 수 있지만 지금은 나에게 몇 가지 문제를주는 데이터 파일이있다. 세 개의 열과 머리글이 들어있는 파일을 읽으려고하면 다음과 같은 숫자 표가 표시됩니다.읽기가 파이썬에서 적합 파일

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

지금이 정수이고 데이터 파일은 정말 세 개의 열을 두 번 포함 포함해야이 같은 세 개의 열 수레 :

[9819.3801, 0.00000, 0.00000]

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

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

mrdfits이라는 IDL의 패키지를 사용하여 값을 검색 할 수 있으므로이 값을 가져야한다는 것을 알고 있습니다. 어떤 데이터 형식에 어떤 파일 형식이 포함되어 있고 어떤 형식인지 찾고자 시도했습니다. 내 코드는 다음과 같습니다.

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]] 

내 질문은 기본적으로; 데이터에서 읽을 수있는 또 다른 방법이있어서 비 정수 데이터의 세 열을 얻을 수 있습니까? 나는 파일이 일반적으로 다른 방법으로 읽혀지는 빈 타일이기 때문에 그것이 궁금합니다. 현재 내가하는 것보다 세 열을로드 할 수있는 또 다른 방법이 있습니까? 몇 가지 사항을 명확히하기 위해 나를 필요로하는 경우, 지금 당장 여러 가지를 시도 했으므로 어떤 방향으로 가져갈 지 확신하지 못합니다. 도움이 될 것입니다.

+0

예. 편집 해 주셔서 감사합니다! :-) – Quasar

답변

0

일단 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 인 3 개의 열이 있습니다. 이제 J,H,K이라고 말하면 전화 할 수 있습니다.

코드에서 수행하는 작업은 f.info을 인쇄하는 것으로 FITS 파일의 헤더 및 기타 정보 만 제공합니다. 열과 정보를 인쇄하지 않습니다.

+0

원래 질문을 편집했습니다. 메이비 (Maybee)는 내 질문을 명확히 할 것입니다. 보통 PyFits를 사용하는 것이 이상한 이상한 데이터 세트를 사용하지 않기 때문입니다. 그러나 나는 데이터 파일이 손상되었다고 생각하지만 maybee 나는이 데이터 유형에 대해 잘못된 방식으로 그것을 읽고있다. – Quasar

관련 문제