我拥有一张适合格式的表格。我正在 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 的拟合界面功能最适合处理图像数据,而不是表格数据。
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)
写出
关于python - 如何从拟合表 python 中进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35752388/