如何在Python中将双列FITS表转换为二维数组
把Astropy Table转成二维数组的入门思路
嘿,这个需求其实挺容易实现的,Astropy的Table类本身就和NumPy数组兼容性很好,给你几个简单的入门方法:
方法一:利用Table的
as_array()方法转换
首先用as_array()把整个表转成NumPy的结构化数组,然后再把结构化数组的两列提取出来组合成普通二维数组:from astropy.table import Table import numpy as np # 读取你的FITS二进制表 fits_table = Table.read("your_data.fits") # 转成结构化数组 structured_arr = fits_table.as_array() # 提取两列并组合成二维数组(替换成你实际的列名) two_d_arr = np.column_stack([structured_arr["column1"], structured_arr["column2"]])方法二:直接提取列数据再堆叠
更直接的方式是单独取出每一列的底层NumPy数组,然后用NumPy的堆叠函数组合:# 提取每一列的数据(.data属性直接返回NumPy数组) col1 = fits_table["column1"].data col2 = fits_table["column2"].data # 按列堆叠成二维数组 two_d_arr = np.column_stack((col1, col2)) # 如果想按行排列可以用np.vstack,不过双列场景下column_stack更常用
额外小提示:如果你的两列数据类型不同,NumPy会自动把它们转换为兼容的类型;如果需要指定特定类型,可以在堆叠时加上dtype参数,比如np.column_stack((col1, col2), dtype=np.float64)。
内容的提问来源于stack exchange,提问作者akearney
相关产品推荐
相关产品推荐

