根据给定列中的值筛选astropy表格

2024-04-24 18:53:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个astropy表,如下所示:

$ print(astro_table)
 id    xcentroid     ycentroid     sharpness        roundness1    ... npix sky      peak          flux            mag       
---- ------------- ------------- -------------- ----------------- ... ---- --- ------------- ------------- -----------------
6603 346.836613078 4089.22051381 0.292000724835   0.0734556783249 ... 49.0 0.0 69302.3984375 245.224909511    -5.97391145737
6177 919.415933548 3859.57301712 0.406784343306   -0.277953216167 ... 49.0 0.0 68524.5234375 220.268294418    -5.85737997245
6602 345.532899395 4088.87923557 0.401278628932   -0.450002792676 ... 49.0 0.0 70189.1953125 210.018583984    -5.80564431499
 ...           ...           ...            ...               ... ...  ... ...           ...           ...               ...
5626 3095.76998822 3522.08198969 0.393572474564   -0.543965319616 ... 49.0 0.0 3037.37036133 1.00374231333 -0.00405558116745
3577  824.59454487 2245.85801066 0.578026446726 -0.00166964746818 ... 49.0 0.0 3150.42285156 1.00347471149 -0.00376608082606
 612 3971.99991783 391.836698859 0.363131852861  -0.0206680542966 ... 49.0 0.0 3087.11572266 1.00319616544 -0.00346465867044
Length = 6603 rows

我想创建一个新表,过滤掉所有那些peak值高于某个p_max阈值的星星。在

我一直在玩filter方法,这就是我可以想到的:

^{pr2}$

这是可行的,但感觉不必要复杂。另外,我想将p_max参数传递给non_saturated()函数,但我不能,因为它只接受两个参数。这迫使我在函数(60000.)中硬编码一个值,这是我不想做的。在


Tags: 函数idtableastromaxprintskyastropy
1条回答
网友
1楼 · 发布于 2024-04-24 18:53:06

正如我在评论中提到的,这个答案是基于来自selecting records from a table的信息。我使用astropy分布中提供的fits文件。在

>>> from astropy.io import fits
>>> import os
>>> os.chdir("C:\Python34\Lib\site-packages\astropy\io\fits\tests\data")
>>> tableData=fits.open("table.fits")[1].data
>>> print(tableData)
[('NGC1001', 11.1) ('NGC1002', 12.3) ('NGC1003', 15.2)]
>>> tableData.names
['target', 'V_mag']
>>> mask = tableData['V_mag'] < 13.0 
>>> mask
array([ True,  True, False], dtype=bool)
>>> tableData[mask]
FITS_rec([('NGC1001', 11.1), ('NGC1002', 12.3)], 
      dtype=(numpy.record, [('target', 'S20'), ('V_mag', '>f4')]))

相关问题 更多 >