【问题标题】:How to sort through a list of observable coordinates?如何对可观察坐标列表进行排序?
【发布时间】:2016-03-14 15:06:14
【问题描述】:

我正在努力寻找从坐标列表中删除不需要的目标的最佳方法。我的坐标(Ra,Dec)是使用astropy.coordinates.SkyCoord 形成的,但是我有大量的偏角太低的不可观察目标,所以我想要做的是对我的列表进行排序并删除所有偏角较低的目标例如,大于 -10 度(因为我的望远镜在北半球)。

这是生成列表的代码行,为简化起见,它称为radecs,并从天球坐标获取 Ra 和 Dec。

radecs = astropy.coordinates.SkyCoord(ra=phi*u.rad, dec=(0.5*np.pi - theta)*u.rad)

这是我的坐标列表如何在 Python 中输出的示例。

<SkyCoord (ICRS): (ra, dec) in deg
    [(45.0, 60.0), (135.0, 45.0), (225.0, 25.0), ...,
    (135.0, 55.0), (225.0, 70.0), (315.0, -20.0)]>

【问题讨论】:

    标签: python coordinates astronomy astropy


    【解决方案1】:

    我将说明如何在一些任意坐标上使用带有布尔掩码的 numpy 索引:

    from astropy.coordinates import SkyCoord
    import astropy.units as u
    import numpy as np
    phi = np.linspace(0,2*np.pi,20)
    theta = np.linspace(0, np.pi, 20)
    radecs = SkyCoord(ra=phi*u.rad, dec=(0.5*np.pi - theta)*u.rad)
    radecs
    

    给我radecs:

    <SkyCoord (ICRS): (ra, dec) in deg
        [(0.0, 90.0), (18.94736842, 80.52631579), (37.89473684, 71.05263158),
         (56.84210526, 61.57894737), (75.78947368, 52.10526316),
         (94.73684211, 42.63157895), (113.68421053, 33.15789474),
         (132.63157895, 23.68421053), (151.57894737, 14.21052632),
         (170.52631579, 4.73684211), (189.47368421, -4.73684211),
         (208.42105263, -14.21052632), (227.36842105, -23.68421053),
         (246.31578947, -33.15789474), (265.26315789, -42.63157895),
         (284.21052632, -52.10526316), (303.15789474, -61.57894737),
         (322.10526316, -71.05263158), (341.05263158, -80.52631579),
         (0.0, -90.0)]>
    

    要获得radecsdec(偏角),您可以访问该属性:

    radecs.dec
    
    [90, 80.526316, 71.052632, 61.578947, 52.105263, 42.631579, 33.157895, 23.684211, 14.210526, 4.7368421, −4.7368421, −14.210526, −23.684211, −33.157895, −42.631579, −52.105263, −61.578947, −71.052632, −80.526316, −90]
    

    所以我们可以通过创建掩码访问所有偏角高于-10 度的目标:

    radecs.dec > - 10 * u.degree
    

    然后索引所有满足这个掩码的目标:

    radecs2 = radecs[radecs.dec > - 10 * u.degree]
    

    给我以下radecs2

    <SkyCoord (ICRS): (ra, dec) in deg
        [(0.0, 90.0), (18.94736842, 80.52631579), (37.89473684, 71.05263158),
         (56.84210526, 61.57894737), (75.78947368, 52.10526316),
         (94.73684211, 42.63157895), (113.68421053, 33.15789474),
         (132.63157895, 23.68421053), (151.57894737, 14.21052632),
         (170.52631579, 4.73684211), (189.47368421, -4.73684211)]>
    

    基本上你所做的只是最后一步(radecs2 = radecs[radecs.dec &gt; - 10 * u.degree]),所有其他步骤都只是解释性的。

    【讨论】:

    • 太好了,谢谢@MSeifert,我知道这很简单,但我不确定 Ra 坐标是否会与“蒙面”赤纬坐标一起使用。
    • 这也适用于 astropy.Table 吗?在这张表中,我在 Ra 和 Dec 中添加了第三个值,即恒星的视星等。我意识到,当我尝试新的“radecs2”坐标列表时,该列表的长度现在比我表中相应的幅度列表短,因此掩码不会转置到我的第三列。
    • @Dean:这是一个不同的问题。请打开另一个问题,显示您如何创建该表以及您想要做什么。 :)
    • 我已经完成了,你可以在这里找到它(stackoverflow.com/questions/36011398/…),谢谢你的建议。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2017-11-04
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多