背景:
我收到了四个数据目录,其中第一个目录(我们称之为 Cat1)给出了场 1 和 2 中无线电源的坐标(赤经和赤纬、RA 和 Dec),第二个目录(Cat2)给出了 RA和 Dec 适用于领域 1 中的无线电源和红外 (IR) 源,第三个目录 (Cat3) 给出了领域 2 中的无线电和红外源的 RA 和 Dec,第四个目录 (Cat4) 给出了光源的 RA 和 Dec在字段 1 和 2 中。
Cat1 具有大约 2000 个场 2 源,请记住,某些源实际上在其维度上进行了多次测量,例如;源 1、源 2、源 3a、源 3b、源 3c、源 4...
Cat1 大约有 3000 个场 1 源,其中一些源还是部分的。 Cat 1 是一个 .dat 文件,我在 textedit 中打开该文件,并将其转换为 .txt 以与 np.genfromtxt 一起使用。
Cat2 具有字段 1 的大约 1700 个源。
Cat3 拥有大约 1700 个字段 2 的源。
Cat2 和 Cat3 是 .csv 文件,我在 Numbers 中打开它们。
Cat4 大约有 1200 个字段 1 的源,大约 700 个字段 2 的源。Cat4 是一个 .dat 文件,我在 textedit 中打开该文件,并将其转换为 .txt 以与 np.genfromtxt 一起使用。
还弄清楚了如何转换 .csv 文件中的 Cat1 和 Cat4。
Aim:
目标是将这四个目录合并为一个目录,该目录给出来自 Cat2、Cat1 和 Cat4(字段 1)的 RA 和 Dec,然后给出来自 Cat3、Cat1 和 Cat4(字段 2)的 RA 和 Dec,这样 RA来自 Cat1 和 Cat4 的 RA 和 Dec 与来自 Cat1 或 Cat2 的 RA 和 Dec 最接近,因此可以说它们很可能是同一源。
重叠程度会有所不同,但我已经为数据生成了散点图,显示每个 Cat2 和 Cat3 源都有相应的 Cat1 和 Cat4 源,在绘图标记大小的精度范围内,当然还有许多剩余源在 Cat1 和 Cat4 中,它们比 Cat2 和 Cat3 包含更多的源。
诀窍在于,因为坐标不完全匹配,所以我需要能够首先查看 RA 并找到最佳匹配值,然后查看相应的 Dec,并检查它是否也是最佳对应值。
例如,对于 Cat2 中的源:RA = 53.13360595,Dec = -28.0530758
类别 1:RA = 53.133496,12 月 = -27.553401
或 RA = 53.133873,十二月 = -28.054600
在这里,53.1336 等于 53.1334 和 53.1338 之间,但显然 -28.053 比 -27.553 更接近 -28.054,因此 Cat1 中的第二个选项是获胜者。
进步:
到目前为止,我已经纯粹通过肉眼将 Cat2 中的前 15 个值与 Cat1 中的值进行了匹配(command+f 尽可能多的小数位,然后使用最佳判断),但显然这对于跨 Cat2 和 Cat3 的所有 3400 个源来说效率极低。我只是想亲眼看看匹配的准确性如何,不幸的是,有些匹配仅到小数点后第二或第三位,而另一些则匹配到第四或第五位。
在生成散点图时,我使用了代码:
cat1 = np.genfromtext('filepath/cat1.txt', delimiter = ' ')
RA_cat1 = cat1[:,][:,0]
Dec_cat1 = cat1[:,][:,1]
然后简单地绘制 RA_cat1 与 Dec_cat1 的关系,并对我的所有目录重复此操作。
我现在的问题是,在寻找如何生成能够匹配我的坐标的代码的答案时,我看到了很多涉及将数组转换为列表的答案,但是当尝试使用
cat1list = np.array([RA_cat1, Dec_cat1])
cat1list.tolist()
我最终得到了一份表格清单;
[RA1、RA2、RA3、...、RA3000]、[Dec1、Dec2、Dec3、...、Dec3000]
而不是我认为更有帮助的;
[RA1,Dec1],[RA2,Dec2],...,[RA3000,Dec3000]。
此外,对于类似的问题,列表转换成功后最有用的答案似乎是使用字典,但我不清楚如何使用字典来产生我上面描述的那种比较。
此外,我应该提到,一旦我成功完成了这项任务,我就被要求对相当大的数据集重复该过程,我不确定有多大,但我假设可能有数万个坐标套。