我拥有一张适合身材的桌子。我在Python中使用astropy.io.fits库。
我正在读取文件,并且希望在有条件的情况下打印数组。

例如,我要打印列“ CHI”>值的所有行

#!/usr/bin/python
# coding: utf-8

from astropy.io import fits
import numpy as np

        ##################################
        # Fichier contenant le champ 169 #
        ##################################

file = '/astromaster/home/xxxx/Bureau/Stage/Champs/Field_169/Field169_combined_final_roughcal.fits'

field169 = fits.open(file)          # Ouverture du fichier à l'aide d'astropy

tbdata = field169[1].data           # Lecture des données fits

#print tbdata['CHI']
#print tbdata[tbdata['CHI'] < 1.0]

for row in tbdata :
    if tbdata['CHI'] < 1.0 :
        print row


并且,如何在新的打印数组中添加一个或两个以上条件?

谢谢 !

最佳答案

Astropy的fits界面功能最适合处理图像数据,而不是表格格式。

Astropy tables库将对您有所帮助。使用t = astropy.table.Table.read(fname)(除了:file在Python中是保留的,因此应避免将其用作变量名)将允许您将FITS表作为Astropy表读取,该表的工作原理与numpy记录非常相似数组。

然后,您可以根据列值进行过滤,例如:print t[t['CHI'] < 1.](如果您不熟悉numpy,则可能需要阅读更多有关掩码和元素选择的内容,因为这与numpy的功能基本相同-如果您不知道,熟悉,我想阅读上面的声明“ t使得t['CHI']小于1。”)

您还可以组合条件:print t[(t['A'] < 1) & (t['B'] > 2)]。完成后,您可以使用t.write(fname2)写出

08-25 00:11