我拥有一张适合身材的桌子。我在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)
写出