我已经在pyfits中打开了一个FITS文件。头文件读取带有36个列标记的DIMENSION= 52989R x 36C的XTENSION='BINTABLE',如'ZBEST'、'ZQUALITY'、'M_B'、'UB'、'PGAL'等。
现在,我必须从数据中选择'ZQUALITY‘大于2& 'PGAL’等于3的对象。然后,我必须为符合上述条件的相应对象的'ZBEST‘制作一个直方图。此外,我还必须为这些对象绘制'M_B‘和'UB’。
最后,我想把' zbest‘分成三个切片(zbest < 0.5),(0.5 1.0),并分别绘制它们的直方图和'M_B’与'UB‘图。
我坚持选择符合这两个条件的数据。谁能告诉我如何从满足两个条件('ZQUALITY‘>2和'PGAL’== 3 )的数据中选择对象?我使用的是like:data.field[('zquality' > 2) & ('pgal'==3)],但它不起作用。
发布于 2014-04-24 03:56:31
表达式data.field[('zquality' > 2) & ('pgal'==3)]请求字符串'zquality'大于2(始终为真)且字符串'pgal'等于3(也始终为假)的字段。
实际上,你很可能会得到一个异常,因为data.field是PyFITS返回表的Numpy recarray对象上的一个方法。
你想要像data[(data['zquality'] > 2) & (data['pgal'] == 3)]这样的东西。
这个表达式的意思是“给我data的'zquality‘列包含的值大于2的行。然后给我data的'pgal’列的值等于3的行。现在给我从两个行掩码的逻辑'and‘中选择的data的全部行。
https://stackoverflow.com/questions/23246013
复制相似问题