2016-11-24 21 views
2

私は現在、いくつかのフィットテーブルを扱っています。私はAstropy.io.fitsでの出力に問題があります。基本的には、興味のないオブジェクトのデータを含む行を切り出していますが、新しいテーブルを保存すると、それらの行がすべて魔法のように再現されました。例えばAstropy Fit:行をスライスしてテーブルを書き出す方法は?

import astropy.io.fits as fits 
import numpy as np 

hdu = fits.open('some_fits_file.fits')[1].data 

sample_slice = [True True True False False True] 

hdu_sliced = hdu[sample_slice] 

今私の素朴な心は)「HDU」は6行があり、hdu_slicedはあなたがnp.sizeを(使用している場合、あなたが得るだろうかである、4行があることを期待しています。私はhdu_sliced保存すると、新しいフィットファイルも4行がありますので:

new_hdu = fits.BinTableHDU.from_columns(fits.ColDefs(hdu_sliced.columns)) 

new_hdu.writeto('new_fits_file.fits') 

np.size(hdu3) 
6 

をだから私はスライスに処分したこれら2つの行が実際にはテーブルと出力ファイルから削除されていないいくつかの理由であります元のファイルとまったく同じです。

テーブルから削除したい行を削除して、その新しいデータを新しいファイルに出力するにはどうすればよいですか?

乾杯、 アシュリー

+0

はfits.fitsrec.FITS_rec' == 'タイプ(HDU)ですか? –

+0

はい、そのタイプです。 – AshleyNova

答えて

-1

あなたがFITS_recを使用してに固執する場合は、回避策であるように思わ以下を試すことができます。

new_hdu = fits.BinTableHDU.from_columns(hdu_sliced._get_raw_data()) 
+0

それはそれが終わったように見えます!ありがとうございました。代わりにastropy.tableを使用するようにすべてのコードを再設計することを楽しみにしていました。 – AshleyNova

+1

下線で始まるメソッドは、変更される可能性があるので使用しないでください。内部使用のみです。より良い方法があります。 – Iguananaut

4

あなたがastropy.table.Table代わりのastropy.io.fits.BinTableを使用することはできますか?

これはもっとフレンドリーなテーブルオブジェクトです。行選択を行うために

一つの方法は、あなたがしたい行のリスト(または配列)を持つテーブルオブジェクトへのインデックスです:

>>> from astropy.table import Table 
>>> table = Table() 
>>> table['col_a'] = [1, 2, 3] 
>>> table['col_b'] = ['spam', 'ham', 'jam'] 
>>> print(table) 
col_a col_b 
----- ----- 
    1 spam 
    2 ham 
    3 jam 
>>> table[[0, 2]] # Table with rows 0 and 2 only, row 1 removed (a copy) 
<Table length=2> 
col_a col_b 
int64 str4 
----- ----- 
    1 spam 
    3 jam 

あなたが読んでTableと直接FITSに書き込むことができます。

table = Table.read('file.fits', hdu='mydata') 
table2 = table[[2, 7, 10]] 
table2.write('file2.fits') 

潜在的な問題があります。 Tableを使用しているときはFITS BINTABLEヘッダーは保持されず、キーのみの値情報はtable.metaのstoreadです。 2つのテーブルオブジェクトの詳細、データの表現方法、2つのテーブルオブジェクトの変換方法、またはここでのフォローアップの質問やastropy-devメーリングリストを参照することで、テーブルのAstropyドキュメントとFITS BINTABLEを参照できます。

関連する問題