我在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)]
,但它不起作用。在
表达式
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
的整行。在相关问题 更多 >
编程相关推荐