我有两个数组,A和B的大小分别为(2,25919)和(2,64788)。我一直在尝试将数组B的行和列值与点A中的值进行比较,以查看哪些值落在点A的指定半径内。
我已经尝试了Given two lists of 2d points, how to find the closest point in the 2nd list for every point in the 1st list?中的切片和KDTree示例,这是一个与我自己的问题很接近的问题。然而,由于我自己的数组是2个不同的大小,我得到错误。
我自己的代码现在看起来像这样:
A = [decamra, decamdec]
B = [ra, dec]
tree = KDTree(A)
results = tree.query_ball_point(B, r=r)
result = sum(len(list) for lis in results)
它返回错误“x必须由长度为25919的向量组成,但具有形状(2,64788)”。
同样,我希望代码能找到B中所有落在A点半径内的点,我已经尝试了很多其他方法,但数组大小似乎是我在这里遇到的最大问题。有没有办法修改这段代码,使数组大小不必匹配?
1条答案
按热度按时间yacmzcpb1#
使用广播进行外减法,计算每一个可能的对距离,然后进行比较。因为你需要A的全部,你可以划分B,然后把结果连接起来。