0

我在 pyfits 中打开了一个 FITS 文件。HEADER 文件使用 36个列标签读取XTENSION='BINTABLE',如、、、、、等。DIMENSION= 52989R x 36C'ZBEST''ZQUALITY''M_B''UB''PGAL'

现在,我必须从数据中选择“ZQUALITY”大于 2 且“PGAL”等于 3 的对象。然后我必须为符合上述条件的相应对象的“ZBEST”制作直方图。我还必须为这些对象绘制“M_B”与“UB”。

最后,我想将“ZBEST”分成三个切片(zbest < 0.5)、(0.5 < zbest < 1.0)、(zbest > 1.0),并分别绘制直方图和“M_B”与“UB”图。

我坚持选择服从这两个条件的数据。谁能告诉我如何从满足两个条件('ZQUALITY' > 2 & 'PGAL' == 3 )的数据中选择对象?我正在使用 like:data.field[('zquality' > 2) & ('pgal'==3)]但它不起作用。

4

1 回答 1

1

该表达式data.field[('zquality' > 2) & ('pgal'==3)]要求字符串 'zquality'大于 2(始终为真)和字符串 'pgal'等于 3(也始终为假)的字段。

实际上,您可能会遇到异常,因为data.fieldPyFITS 在其中返回表的 Numpy recarray 对象上的一个方法。

你想要类似的东西data[(data['zquality'] > 2) & (data['pgal'] == 3)]

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

于 2014-04-23T19:56:30.633 回答