python - 如何从拟合表 python 中进行排序

标签 python numpy astropy

我拥有一张适合格式的表格。我正在 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/

相关文章:

Python 天文学 : table and columns objects

python - 通过 PyFITS/AstroPy 的 FITS 图像中的笛卡尔投影问题

python - 向 Eclipse 控制台中运行的程序发送 SIGINT (Ctrl-C)

python - 无法在 Python 中为非平方整数编码

Python解析*未知格式字符串为json或dict

python - 如何使用 python 定义更高阶样条线?

python - H5PY保存复合numpy数组时出现问题

image - Tkinter Canvas不会在c.create_image上显示图像

python - 将赤道转换为alt-az坐标非常慢

python - 根据另一列的日期和类别创建数据排名