繁体   English   中英

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

[英]Condtionally selecting values from a Numpy array returned from PyFITS

我已经在pyfits中打开了FITS文件。 HEADER文件读取XTENSION='BINTABLE' ,其DIMENSION= 52989R x 36C带有36个列标签,例如'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)? 我正在使用: data.field[('zquality' > 2) & ('pgal'==3)]但它不起作用。

表达式data.field[('zquality' > 2) & ('pgal'==3)]正在询问字符串 'zquality'大于2(始终为true)且字符串 'pgal'相等'pgal'到3(也总是假)。

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

您需要类似data[(data['zquality'] > 2) & (data['pgal'] == 3)]

该表达式意味着“给我的‘zquality’列的行data包含值大于2。然后给我的‘PGAL’列的行data以等于三个值。现在给我的整行data选择的来自两个行掩码的逻辑“和”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM