有条件地从PyFIT返回的Numpy数组中选择值

2024-04-29 17:17:28 发布

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

我在pyfits中打开了一个FITS文件。头文件读取XTENSION='BINTABLE',其中DIMENSION= 52989R x 36C包含36个列标记,如,'ZBEST''ZQUALITY''M_B''UB''PGAL'

现在,我必须从'ZQUALITY'大于2且'PGAL'等于3的数据中选择对象。然后我要为符合上述条件的相应对象的“ZBEST”做一个直方图。我还得画出这些物体的“M”和“UB”。在

最后,我想把“ZBEST”分成三个部分(ZBEST<;0.5)、(0.5<;ZBEST<;1.0)、(ZBEST>;1.0),并分别绘制它们的柱状图和“M\u B”与“UB”图。在

我在选择符合这两个条件的数据时陷入了困境。有谁能告诉我如何从同时满足这两个条件的数据中选择对象('ZQUALITY'>;2&;PGAL'==3)?我正在使用like:data.field[('zquality' > 2) & ('pgal'==3)],但它不起作用。在


Tags: 文件数据ltgt头文件条件fitsub
1条回答
网友
1楼 · 发布于 2024-04-29 17:17:28

表达式data.field[('zquality' > 2) & ('pgal'==3)]请求的字段是字符串'zquality'大于2(始终为true),且字符串'pgal'等于3(也始终为false)。在

实际上,您可能会得到一个异常,因为data.field是PyFITS返回表的Numpy recarray对象上的一个方法。在

你想要的是data[(data['zquality'] > 2) & (data['pgal'] == 3)]。在

这个表达式的意思是“给我data的'zquality'列中包含大于2的值的行。然后给出data的'pgal'列的行,其值等于3。现在给我从两行掩码的逻辑'and'中选择的data的整行。在

相关问题 更多 >