我正在编写一个代码,以匹配两个RA和磁偏角值目录。我已经将它们读入两个不同的SkyCoord
对象中,分别称为scatalog
(长度约为30,000)和pcatalog
(长度约为500,000)。
pcatalog
较大,所以我想将scatalog
中的目标匹配到pcatalog
中。
当我这样做
idx, d2d, d3d = match_coordinates_sky(scatalog, pcatalog, nthneighbor=1)
我对结果感到困惑。
文档on astropy指出idx
的形状应与scatalog.
的形状匹配。相反,它的长度与pcatalog
相同。有谁知道为什么会这样?
此外,文档还说idx
是pcatalog
的索引,是与scatalog
条目最接近的匹配项。那将是因为如果我的其他问题没有发生。但是,如果idx
的长度为pcatalog
,则匹配项中存在重复项。如何获取返回最接近匹配项的索引?
idx
的值不唯一是什么意思?
非常感谢您提供的出色帮助!
答案 0 :(得分:0)
注意:这不是答案,而是一个示例,表明我无法重现该问题。需要更多信息来验证和解决问题。
import numpy as np
from astropy.coordinates import SkyCoord, match_coordinates_sky
from astropy import units as u
scatalog = SkyCoord(ra=np.linspace(0, 1, 10)*u.degree, dec=np.ones(10)*u.degree)
pcatalog = SkyCoord(ra=np.linspace(0, 1, 100)*u.degree, dec=np.ones(100)*u.degree)
idx, d2d, d3d = match_coordinates_sky(scatalog, pcatalog, nthneighbor=1)
print(idx.shape)
print(d2d.shape)
收益
(10,) (100,)
(10,) (10,)
即idx
和d2d
的形状与scatalog
相同,而不是pcatalog
。